Con MySQL, il modo più semplice per farlo è archiviare tutto percorsi nell'albero, creando una chiusura transitiva .
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
Ora puoi interrogarlo così:
SELECT t.*
FROM table_children c
JOIN table t ON c.child = t.id
WHERE c.parent = 0;
Vedi anche:
- Qual è il modo più efficiente/elegante per trasformare un tavolo piatto in un albero?
- Modelli per dati gerarchici con SQL e PHP
- SQL Antipatterns:evitare le insidie della programmazione di database