kolumny/wiersze /wartosc jak powiazac

0

Witam. Mam nastepujace tabele:

PRODUKT id_p, nazwa_p
ATRYBUT id_a, nazwa_a
WARTOSC id_w, nazwa_w

nie che by dane w tych tabelach sie powtarzaly dlatego zrezygnowalam z pol wiazacych czyli:

PRODUKT id_p, nazwa_p, id_w
ATRYBUT id_a, nazwa_a, id_w
WARTOSC id_w, nazwa_w, id_w, id_a

Bo chyba w taki sposob mozna je powiazac?? Nie za dobrze siedze w tym temacie wiec nie wiem do konca.

Zatem interesuje mnie ten pierwszy model. Jesli to mozliwe to w jaki sposob stworzyc tabele w ktorej:

na pierwszym miejscu kazdego wiersza bedzie wartosc z tablicy PRODUKT
na pierwszym miejscu kazdej kolumny bedzie wartosc z tablicy ATRYBUT
na przekatnych bedzie odpowiedni dla danego atrybutu i produktu WARTOSC

pusta |atrybut |atrybut |atrybut |atrybut
produkt|wartosc|wartosc|wartosc|wartosc
produkt|wartosc|wartosc|wartosc|wartosc
produkt|wartosc|wartosc|wartosc|wartosc
produkt|wartosc|wartosc|wartosc|wartosc

bardzo prosze o pomoc.
Pozdrawiam

0

jeśli korzystasz z sql'a to się tak nie robi. Nie połączysz tych tabel jeśli nie stworzysz klucza obcego (czyli kolumny zawierającej id z innej tableli)
Zakładając że struktura jest następująca:
produkt ma atrybuty, któe skolei mają wartości, to dodaj do tableli atrybuty kolumnę przechowującą id produktu, natomiast do wartości kolumnę z odpowiadającym jej atrybutem.

0

zrobilam tak:
tabele jakby nadrzedne:
KATEGORIA id_k, nazwa_k
RODZAJ id_r, nazwa_r, id_k
PODRODZAJ id_pr, nazwa_pr, id_r

i teraz jak juz wybiore kategorie, rodzaj i podrodzaj musze stworzyc ta tabele z odpowiednimi im produktami, i tu sa nastepujace tabele (na marginesie dodam ze podrodzaj nie koniecznie musi istniec dla danego rodzaju, zatem niektore produkty nie beda nalezaly do zadnego podrodzaju a jedynie do rodzaju, bo mogloby sie wydawac ze niepotrzemnie dodaje pole id_r do ponizszych tabel):

PRODUKT id_p, nazwa_p, id_r, id_pr, id_a
ATRYBUT id_a, nazwa_a, id_r, id_pr, id_p
WARTOSC id_w, nazwa_w, id_p, id_a

Wymyslilam nastepujace zapytania:

  1. SELECT a.id_a, a.id_r, r.id_r FROM atrybut a LEFT JOIN rodzaj r ON a.id_r=r.id_r OR SELECT a.id_a a.id_pr, pr.id_pr FROM atrybut a LEFT JOIN podrodzaj pr ON a.id_pr=pr.id_pr

to jest na pewno zle skonstruowane ale ktos kto wie jak to zrobic to bedzie wiedzial o co mi chodzi ---tak mysle ;D ehhe w kazdym razie wynikiem tego zapytania ma byc id_a ktore z reszta chce pozniej wykorzystac w trzecim zapytaniu

  1. SELECT p.id_p, p.id_r, r.id_r FROM produkt p LEFT JOIN rodzaj r ON p.id_r=r.id_r OR SELECT p.id_p p.id_pr, pr.id_pr FROM produkt p LEFT JOIN podrodzaj pr ON p.id_pr=pr.id_pr

to jest analogicznie do poprzedniego a tu wynikiem ma byc id_p

teraz chce te wybrane id_p oraz id_a wykorzystac w nastepujacym zapytaniu:
3 SELECT nazwa_w, id_p, id_a FROM wartosc WHERE id_a=id_a (temu z zapytania1) AND id_p=id_p(tamtemu z zapytania2)
wynikiem ma byc nazwa_w

to tak na chlopski rozum wymyslilam. Natomiast nawet gdyby te zapytania dzialaly to w jaki sposob ja mam skonstruowac kod by rysowala sie taka tabela gdzie na przekatnej atrybutu i produktu znalazlaby sie odpowiednia im wartosc?? tego kompletnie nie umiem wymyslec :((
Prosze o jakas pomoc, podpowiedz, pomysl cokolwiek.....

ok udalo mi sie narysowac tabele tylko musze jeszcze wsadzic ta wartosc w ta przekatna, ale chyba tez sobie dam rade :) w razie co bede pytac.

czyli to 3 zapytanie mnie teraz interesuje jak pobrac z tamtych dwoch id_a i id_p i wsadzic do tego 3 zapytania??

// rozwiązane

1 użytkowników online, w tym zalogowanych: 0, gości: 1