W moim sercu czuję, że musi to być super proste rozwiązanie rekursywne, ale nie mogę od razu tego zignorować.Najprostszy sposób na zbudowanie drzewa z listy przodków
Mam drzewo przechowywane w SQL jako tabela zamknięcia. Drzewo wygląda jak: (1 (2 (3), 4)), a językami są SQL i PHP 5.3 MySQL.
tabela zamknięcie jest więc:
+----------+------------+
| ancestor | descendant |
+----------+------------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 2 | 3 |
+----------+------------+
mogę kwerendy przodków dość łatwo:
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 można łatwo zbudować drzewo w PHP z tymi danymi? Czy mogę użyć bardziej inteligentnej kwerendy do pobrania większej ilości danych z MySQL?
Interesujące! to ma sens, rodzice zawsze będą mieli mniej przodków niż ich dzieci. –