私の心の中で、これにスーパー単純な再帰的解決策がなければならないと感じています。祖先のリストからツリーを構築するもっとも簡単な方法
私はクローズテーブルとしてSQLに格納されたツリーを持っています。ツリーは(1(2(3)、4))のようになり、言語はMySQLのSQLとPHP 5.3です。
閉鎖テーブルはこのようです:
+----------+------------+
| ancestor | descendant |
+----------+------------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 2 | 3 |
+----------+------------+
私は非常に簡単に先祖を照会することができます:どのように私は簡単にこのデータをPHPでツリーを構築することができ
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 |
+----+-----------+
?よりスマートなクエリを使用して、より多くのデータをMySQLから取得できますか?
興味深い!それは理にかなっています、両親は常に彼らの子供よりも少ない祖先を持つでしょう。 –