Con MySQL, la forma más fácil de hacer esto es almacenar todos caminos en el árbol, creando un cierre transitivo .
table_children
parent child
0 0
1 1
2 2
3 3
4 4
0 1
0 2
0 3
0 4
1 2
1 3
1 4
3 4
Ahora puedes consultarlo así:
SELECT t.*
FROM table_children c
JOIN table t ON c.child = t.id
WHERE c.parent = 0;
Véase también:
- ¿Cuál es la forma más eficiente/elegante de convertir una mesa plana en un árbol?
- Modelos para datos jerárquicos con SQL y PHP
- Antipatrones SQL:Cómo evitar las trampas de la programación de bases de datos