Nel mio cuore, sento che ci deve essere una soluzione ricorsiva super semplice a questo, ma non posso immediatamente farlo.Il modo più semplice per costruire un albero da un elenco di antenati
Ho una struttura archiviata in SQL come tabella di chiusura. L'albero ha il seguente aspetto: (1 (2 (3), 4)) e le lingue sono MySQL di MySQL e PHP 5.3.
La tabella di chiusura è quindi:
+----------+------------+
| ancestor | descendant |
+----------+------------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 2 | 3 |
+----------+------------+
posso interrogare gli antenati abbastanza facilmente con:
SELECT descendant AS id, GROUP_CONCAT(ancestor) as ancestors FROM
closure GROUP BY (descendant);
+----+-----------+
| id | ancestors |
+----+-----------+
| 1 | 1 |
| 2 | 2,1 |
| 3 | 3,1,2 |
| 4 | 4,1 |
+----+-----------+
Come posso facilmente costruire un albero in PHP con questi dati? Posso usare una query più intelligente per estrarre più dati da MySQL?
Interessante! questo ha senso, i genitori avranno sempre meno antenati dei loro figli. –