Na swojej stronie próbuję wprowadzić kategorie/podkategorie dla artykułów. Mam np. takie coś:
Książki
-- Informatyka
---- Programowanie
---- Bazy danych
-- Motoryzacja
---- Samochody
---- Motory
stworzyłem więc tabele 'cats', a w niej:
`CAT_ID` - AUTO_INCREMENT
`CAT_NAME` - VARCHAR (48)
`CAT_PARENT` - INT(1)
`CAT_PATH` - VARCHAR (48)
Przykładowe uzupełnienie wygląda tak:
1 | Informatyka | 0 | informatyka
2 | Programowanie | 1 | programowanie
3 | Motoryzacja | 0 | motoryzacja
4 | Samochody | 3 | samochody
Gdzie jeśli CAT_PARENT == 0 to oznacza to, że jest to kategoria główna.
Mam jeszcze kategorię 'KSIĄŻKI' a w niej:
KSIAZKA_ID | KSIAZKA_NAZWA | KSIAZKA_CAT | KSIAZKA_OPIS
i przykładowe uzupełnienie:
1 | Programowanie PHP | 2 | Opis
2 | O samochodach | 3 | Opis
3 | Inna o samochodach | 3 | Opis
No i teraz na stronie głównej wyświetlam sobie WSZYSTKIE książki - zwykłe zapytanie SELECT i w pętli while wyświetlam wszystkie książki. Mam też wyświetlone wszystkie kategorie z bazy danych. Po wejściu w kategorie główną (np. Informatyka) wyświetlam (jeśli istnieją) wszystkie podkategorie - działa OK. Pod podkategoriami próbuję zrobić listę WSZYSTKICH książek, które dotyczą kategorii INFORMATYKA, a więc wszystkich podkategorii których rodzicem jest właśnie INFORMATYKA.
Jak powinno wyglądać takie zapytanie? W miarę optymalne żeby było bo tych książek trochę mam, a nie chcę żeby mi muliła strona.
Czytałem o nested set - nie podoba mi się to zupełnie i nie rozumiem tego i nie chcę nawet zrozumieć. Odpada. Czytałem też o drzewach IP, ale też wolałbym jakoś inaczej to zrobić. Na stronie najgłębsze zagęszczenie jest do 3 poziomu więc co będzie najlepszym rozwiązaniem? Najlepiej by było żeby ktoś pomógł mi skonstruować zapytanie do tego powyżej.
Z góry dzięki.