Der einfachste Weg, einen Baum aus einer Ahnenliste zu bauen

In meinem Herzen habe ich das Gefühl, dass es eine supereinfache rekursive Lösung dafür geben muss, aber ich kann es nicht sofort fassen.

Ich habe einen Baum in SQL als Abschlusstabelle gespeichert. Der Baum sieht wie folgt aus: (1 (2 (3), 4)) und die Sprachen sind MySQLs SQL und PHP 5.3.

Der Abschlusstisch ist also:

+----------+------------+
| ancestor | descendant |
+----------+------------+
|        1 |          1 | 
|        2 |          2 | 
|        3 |          3 | 
|        4 |          4 | 
|        1 |          2 | 
|        1 |          3 | 
|        1 |          4 | 
|        2 |          3 | 
+----------+------------+

Ich kann die Ahnen ganz einfach abfragen mit:

 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       | 
 +----+-----------+

Wie kann ich mit diesen Daten auf einfache Weise einen Baum in PHP erstellen? Kann ich eine intelligentere Abfrage verwenden, um mehr Daten aus MySQL abzurufen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage