![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 17.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
witam
mam taka tabele kategoria -------- id_kategoria (PK) id_rodzica (FK) nazwa wiecie moze jak za pomoca jednego zapytania sql wyswietlic wysztkie podkategorie ktorych rodzicem jest kategoria o id=1 ? szukalem na forum i zwykle ludzie pisza zeby drzewa a php obslugiwac. ja wolalbym to zalatwic w sql. macie moze jakis pomysl jak to rozwiazac ? pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
W bazie trzymaj, id elementu, id rodzica, ścieżkę, i level. Podam przykład: id parent path level name 1 0 0 0 główny 2 1 1 1 pierwszy poziom 3 2 1.2 2 drugi Level to w sumie ilość kropek w ścieżce + 1 więc nawet nie musisz tego trzymać. Całą gałąź pobierasz przez LIKE. Na przykład gałąź od elementu id 2: path LIKE 2% Oczywiście musisz używać CONCAT, żeby dodawać kropki przed i po ścieżce bo Ci złapie trochę "nie tych" elementów. Ścieżka w bazie 1.2.3 CONCAT('.', path, '.') LIKE .1.2.3.% OR path = 1.2.3 Jest to sposób banalny w implemantacji. Wszystkie operacje (dodawanie, przenoszenie całych gałęzi, usuwanie gałęzi...) są proste i przyjemne. Rozwiązanie jest nawet, można powiedzieć, wydajne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 16:35 |