W MySQL najprostszym sposobem, w jaki to zrobię, jest przechowywanie wszystkich ścieżki w drzewie, tworząc zamknięcie przechodnie .
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
Teraz możesz zapytać o to w ten sposób:
SELECT t.*
FROM table_children c
JOIN table t ON c.child = t.id
WHERE c.parent = 0;
Zobacz też:
- Jaki jest najbardziej wydajny/elegancki sposób przetworzenia płaskiego stołu na drzewo?
- Modele danych hierarchicznych z SQL i PHP
- Antywzorce SQL:unikanie pułapek programowania baz danych