Med MySQL är det enklaste sättet jag gör detta att lagra alla sökvägar i trädet, vilket skapar en transitiv stängning .
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
Nu kan du fråga det så här:
SELECT t.*
FROM table_children c
JOIN table t ON c.child = t.id
WHERE c.parent = 0;
Se även:
- Vad är det mest effektiva/eleganta sättet att analysera ett platt bord till ett träd?
- Modeller för hierarkisk data med SQL och PHP
- SQL Antipatterns:Avoiding the Pitfalls of Database Programming