Met MySQL kan ik dit het gemakkelijkst doen door alles op te slaan paden in de boom, waardoor een transitieve afsluiting wordt gemaakt .
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 kun je het als volgt opvragen:
SELECT t.*
FROM table_children c
JOIN table t ON c.child = t.id
WHERE c.parent = 0;
Zie ook:
- Wat is de meest efficiënte/elegante manier om een platte tafel in een boom te ontleden?
- Modellen voor hiërarchische gegevens met SQL en PHP
- SQL-antipatronen:de valkuilen van databaseprogrammering vermijden