Você está tentando resolver um problema comum - como armazenar e recuperar dados hierárquicos em um banco de dados relacional?
A primeira coisa que você deve fazer é ler este artigo em mysql.com, "Gerenciando Dados Hierárquicos no MySQL " ou aqui .
No momento, você está usando o modelo "lista de adjacências". Ele tem várias desvantagens, sendo a principal delas o fato de que é essencialmente impossível escrever uma consulta que retorne todas as árvores que você está armazenando.
Você pode querer considerar mudar para o modelo "conjunto aninhado", que é bem explicado na mesma página.