Cytat(#luq @ 16.09.2011, 00:26:44 )

To które przedstawiłeś z parent id nie jest zbyt dobre w tym konkretnym przypadku...
Dlaczego nie? Ja stosuję takie rozwiązanie i sprawdza się znakomicie. Całą strukturę drzewa pobieram jednym zapytaniem. Po pobraniu danych wystarczy je odpowiednio przetransformować w taki sposób, by otrzymać (dla tego przykładu) strukturę:
Kod
tree = [
0 = [
[id: 11, name: ...],
[id: 12],
[id: 16]
],
12 = [
[id: 13],
[id: 14]
],
14 = [
[id: 15]
]
];
Kluczem tablicy jest ID rodzica, a elementami są jego potomkowie. Dzięki temu renderowanie drzewa od wybranej gałęzi (np. 0) jest banalnie proste - jeśli istnieje tree[$i] to lecimy po jego elementach. Dla każdego sprawdzamy czy istnieje tree[$id] i jeśli tak to powtarzamy operację. Pobranie identyfikatorów dzieci? Analogicznie jak poprzednio, ale zwracamy tylko identyfikatory. Ścieżka kategorii - też trzeba polecieć pętlą by znajdować rodziców poszczególnych elementów. Drzewko takie ładujemy raz i wszelkie operacje wykonujemy bezpośrednio na tablicy PHP, a nie bazie danych.