można to posortować i poukładać jednym zapytaniem...
luknij na ten temat:
[SQLite]Pobieranie danych z trzech tabeli - chodziło tutaj o podkategorie - to nic, że masz w jednej tabeli

, ale przy jednym zapytaniu jest taki problem, że z góry musisz założyć jakie jest maxymalne zagłębienie (ile tych joinów)...
___________________________________
ograniczeń i mniej problemów możesz mieć jeśli zrobisz to tak jak radzi
WebSee - czyli pobierz jednym zapytaniem zawartość całej tabeli z kategoriami do skryptu, po czym by dowolnie zagłębioną strukturę wykonać pasuje to wrzucić rekurencyjnie (akurat tak na szybko na tablicach nie mam pomysłu, ale..)... pierwszy pomysł jaki mi przychodzi do głowy to zrobić to obiektowo (kategoria jako obiekt)....
więc jako, że tyle obiektów co kategorii i dosyć łatwo odwołać się do id to zrobisz stos obiektów w tablicy o indeksach id, dalej obiekt powinien mieć zmienną składową stosu swoich podkategorii o których nie musisz na razie myśleć, metodę do wrzucania podkategorii... obiekty są przekazywane przez referencję więc wszystko ładnie pięknie... jak masz te obiekty sprawdzasz do jakiej kategorii obiekt np. 5 powinien należeć wg. powyższego do 3, więc piszesz:
stos[3]->ad(stos[5]);
i tak do końca...
przy tym wszystkim w zasadzie nie potrzebujesz informacji o poziomie zagłębienia oprócz jednej: jakie są kategorie główne...
mając to info zaczynasz od kategorii głównych, odpowiednią metodą pobierasz podkategorie (i dalej z podkategorii metodą podkategorie...)...
to by było chyba na tyle

- jakoś na tablicach nie mam ale na pewno trzeba by to zrobić z referencją

- zapewne algorytm będzie podobny jak z obiektami...