Stai cercando di risolvere un problema comune:come archiviare e recuperare i dati gerarchici in un database relazionale?
La prima cosa che dovresti fare è leggere questo articolo su mysql.com, "Gestione dei dati gerarchici in MySQL " o qui .
In questo momento, stai utilizzando il modello "lista di adiacenza". Ha diversi aspetti negativi, primo tra tutti il fatto che è essenzialmente impossibile scrivere una query che ti restituirà tutti gli alberi che stai archiviando.
Potresti prendere in considerazione l'idea di passare al modello "set nidificato", che è ben spiegato nella stessa pagina.
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html