С MySQL най-лесният начин да направя това е да съхраня всички пътища в дървото, създавайки преходно затваряне .
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
Сега можете да го заявите по следния начин:
SELECT t.*
FROM table_children c
JOIN table t ON c.child = t.id
WHERE c.parent = 0;
Вижте също:
- Кой е най-ефективният/елегантен начин за анализиране на плоска таблица в дърво?
- Модели за йерархични данни с SQL и PHP
- SQL Antipatterns:Избягване на клопките на програмирането на бази данни