Vous essayez de résoudre un problème courant :comment stocker et récupérer des données hiérarchiques dans une base de données relationnelle ?
La première chose que vous devriez faire est de lire cet article sur mysql.com, "Gestion des données hiérarchiques dans MySQL " ou ici .
En ce moment, vous utilisez le modèle "liste de contiguïté". Il a plusieurs inconvénients, le principal étant qu'il est essentiellement impossible d'écrire une requête qui vous renverra tous les arbres que vous stockez.
Vous voudrez peut-être envisager de passer au modèle "ensemble imbriqué", qui est bien expliqué sur cette même page.
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html