Czyli muszę przebudować moją bazę. Po przeczytaniu paru postów, zwłaszcza wspomnianego w głównej wiadomości zabrałem się do pracy, nie do końca rozumiejąc jak dokładnie działał będzie ten mechanizm. Wpierw prosta struktura, od czegoś trzeba zacząć.
Tabele:
Kategorie (do drzewa kategorii)
id | nazwa | parent_id | GrupyCech
GrupyCech to dla mnie chwilowa zagadka, ale taką strukturę proponowano w jednym z postów.
Produktyid | nazwa | netto | id_miniaturki | opis i inne atrybuty
ProduktyKategorieid_prod | id_kat
GrupyCechid | id_cechy | nazwa
Cechyid | nazwa | typ[tekst,link,plik,obrazek]
CechyWartosciid | id_cechy | id_prod | wartosc
Powyższa struktura ma za zadanie uporządkować dane w formie kategori i podkategori, dodatkowo, każda kategoria może mieć jakieś cechy. Np procesory i dzieci tej kategorii będą wyświetlały cechę np. FSB, zegar itp. itd.
Proszę o wyrozumiałość, staram się czegoś tutaj nauczyć i przebrnąć przez pracę jaką mam do wykonania
Nie do końca rozumiem co może być cechą kategorii w tabeli Cechy. Czy może to być np. wspomniana częstotliwość w nazwie FSB, ale wtedy co jest typem? Czy typ oznacza typ danych, które pole zawiera - np. może to być liczba a może to być tekst?
Autor struktury z powyżej pisze tak:
Cytat
Przy tworzeniu nowych kategorii produktów użytkownik wybierał sobie po prostu kilka grup cech które mu były aktualnie potrzebne (select multiple) i dane o grupach cech wędrowały do pola "grupy_cech" zlączone przecinkami.
Nie rozumiem co znaczą tutaj "dane o grupach cech". Sam stosowałem czasami zapis do pola typu char stringa id np. kategori rozdzielonych przecinkami. Może chodzi tutaj o id tych cech wybranych, czyli liczb, złączonych przecinkami wrzuconych w pole tekstowe?
Może na przykładzie będzie prościej.
Mamy takie kategorie :
id | nazwa | parent_id | GrupyCech
1 | Procesory | 0 |
2 | AMD | 1 |
3 | Intel | 1 |
4 | Core Duo | 3 |
5 | Celeron | 3 |
Produkty
id | nazwa | netto | id_miniaturki | opis
0 | Core model X | 500.00 | 4 | "opis X"
1 | Celeron model Y | 400.00 | 7 | "opis Y"
Tabela łącząca - jak ją wypełnić?
id_prod | id_kat

|
Czy taka będzie jej zawartość? Może coś zupełnie mylę?
id_prod | id_kat
0 | 1
0 | 3
0 | 4
1 | 1
1 | 3
1 | 5
I ostatnia rzecz na razie - jak wyglądają zapytania do takiej struktury? Założenie jest takie, że wybierając kategorię procesory chcę zobaczyć wszystkie procesory wypisane, zarówno AMD i Intel, ale wybierając kategorię Intel - wiadomo, tylko Intel wraz z wszystkimi produktami dzieci tej kategorii.
EDIT!
Chciałbym pochwalić się, że udało mi się stworzyć system wyświetlania produktów przynależących do wielu kategorii

Struktura tabeli jest podobna jak wyżej w poście. Oto zapytania :
1. Wypisanie produktow w drzewie wszystkich kat
SELECT
SKLEP_Kategorie.id_kat AS id_kategorii,
SKLEP_ProduktyKategorie.id_kat AS id_kat_produktu,
SKLEP_ProduktyKategorie.id_prod AS id_produktu
FROM
SKLEP_ProduktyKategorie, SKLEP_Kategorie
WHERE
SKLEP_ProduktyKategorie.id_kat=SKLEP_Kategorie.id_kat
2. Wypisanie nazwy produktów o katid 1
SELECT
SKLEP_Produkty.id AS idp,
SKLEP_Produkty.nazwa
FROM
SKLEP_ProduktyKategorie, SKLEP_Kategorie, SKLEP_Produkty
WHERE
SKLEP_ProduktyKategorie.id_kat = SKLEP_Kategorie.id
AND SKLEP_Kategorie.id =1
AND SKLEP_Produkty.id = SKLEP_ProduktyKategorie.id_prod
3. Wypisanie danej kategorii razem z produktami z jej podkategorii
SELECT
SKLEP_Produkty.id AS idp,
SKLEP_Produkty.nazwa,
SKLEP_Produkty.netto,
SKLEP_Produkty.vat,
SKLEP_Produkty.czy_promocja,
SKLEP_Produkty.prom_cena,
SKLEP_Produkty.prom_sztuk,
SKLEP_Produkty.prom_data_do,
SKLEP_Produkty.id_miniaturki,
SKLEP_Produkty.ile_zdjec,
SKLEP_Produkty.data_dodania
FROM
SKLEP_ProduktyKategorie, SKLEP_Kategorie, SKLEP_Produkty
WHERE
SKLEP_ProduktyKategorie.id_kat = SKLEP_Kategorie.id
AND SKLEP_Kategorie.id =1
AND SKLEP_Produkty.id = SKLEP_ProduktyKategorie.id_prod
Jestem pewien, że można zrobić to lepiej, ale jak na pierwszy raz to działa
Teraz drugi etap, przypisanie cech do kategorii. Jeżeli ktoś ma jakieś porady, kod, cokolwiek co może mi pomóc w następnym zadaniu to bardzo proszę o posta. Wszelkie uwagi co do powyższego kodu też mile widziane.
Pozdrawiam.