Próbujesz rozwiązać powszechny problem — jak przechowywać i pobierać dane hierarchiczne w relacyjnej bazie danych?
Pierwszą rzeczą, którą powinieneś zrobić, to przeczytać ten artykuł na mysql.com, „Zarządzanie danymi hierarchicznymi w MySQL lub tu .
W tej chwili używasz modelu „listy sąsiedztwa”. Ma kilka wad, z których najważniejszym jest fakt, że zasadniczo niemożliwe jest napisanie zapytania, które zwróci wszystkie przechowywane drzewa.
Możesz rozważyć przejście na model „zestawu zagnieżdżonego”, który jest dobrze wyjaśniony na tej samej stronie.
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html