比方說,我有一個表叫my_table的,看起來像這樣:如何從同一個表中的父行獲取所有子項?
id | name | parent_id
1 | Row 1 | NULL
2 | Row 2 | NULL
3 | Row 3 | 1
4 | Row 4 | 1
5 | Row 5 | NULL
6 | Row 6 | NULL
7 | Row 7 | 8
8 | Row 8 | NULL
9 | Row 9 | 4
10 | Row 10 | 4
基本上,我想我在PHP最終陣列看起來像這樣:
Array
(
[0] => Array
(
[name] => Row 1
[children] => Array
(
[0] => Array
(
[name] => Row 3
[children] =>
)
[1] => Array
(
[name] => Row 4
[children] => Array
(
[0] => Array
(
[name] => Row 9
[children] =>
)
[1] => Array
(
[name] => Row 10
[children] =>
)
)
)
)
)
[1] => Array
(
[name] => Row 2
[children] =>
)
[2] => Array
(
[name] => Row 5
[children] =>
)
[3] => Array
(
[name] => Row 6
[children] =>
)
[4] => Array
(
[name] => Row 8
[children] => Array
(
[0] => Array
(
[name] => Row 7
[children] =>
)
)
)
)
所以,我希望它得到所有parent_id爲空的行,然後遞歸地查找所有嵌套的子節點。
現在,這裏是我遇到的麻煩的部分:
這怎麼可能用1個調用數據庫做了什麼?
我敢肯定,我可以用一個簡單的SELECT語句做到這一點,然後有PHP創建數組看起來像這樣,但我希望這可以用某種奇特的做DB連接或類似的東西。
遞歸查詢可在Oracle和PostgreSQL的最新爲好,但不是MySQL的。 – regilero 2011-01-14 21:48:25