Consulte Administración de datos jerárquicos en MySQL , en concreto el apartado denominado "Modelo de conjuntos anidados". Puede que tengas que leerlo varias veces antes de que tenga sentido (lo hice), pero vale la pena. Es una forma muy poderosa de trabajar con datos anidados y recuperar las partes que desea con una sola consulta.
En el lado negativo, para las actualizaciones tienes que hacer mucho más trabajo.