Najłatwiejszy sposób na zbudowanie drzewa z listy Przodków

W moim sercu czuję, że musi istnieć super proste rekurencyjne rozwiązanie tego problemu, ale nie mogę od razu tego zatrzeć.

Mam drzewo zapisane w SQL jako tabelę zamknięcia. Drzewo wygląda następująco: (1 (2 (3), 4)), a językami są SQL i PHP 5.3 MySQL.

Tabela zamknięcia jest zatem:

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

Mogę łatwo zapytać przodków za pomocą:

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

Jak mogę łatwo zbudować drzewo w PHP z tymi danymi? Czy mogę użyć inteligentniejszego zapytania, aby pobrać więcej danych z MySQL?

questionAnswers(2)

yourAnswerToTheQuestion