在父级之后命令子级的Mysql邻接列表

时间:2013-11-18 15:11:17

标签: mysql hierarchical-data adjacency-list

我的菜单结构有一个经典的邻接列表。我使用递归将它们显示为无序列表。但是,在我的管理区域中,我希望它们一个接一个地显示(在HTML表结构中)。为此,我只需要在我的MYSQL上选择以正确的顺序获取它们。

Parent 1
Child of parent 1
Child of parent 1
Parent 2
Child of parent 2
...

现在我无法想象如何做到这一点。我的表包含“ID”,“Parent_id”,“名称”,“订购”(对于每个父子,订购列从1到X设置)。示例:

id | Parent_id |    name     | ordering
---+-----------+-------------+---------
1  | 0         | Lorem       | 1
2  | 0         | Ipsum       | 2
3  | 1         | Dolor       | 2
4  | 0         | Amet        | 3
5  | 1         | Pract       | 1
6  | 2         | Maloc       | 1

应该给:

1  | 0         | Lorem       | 1
5  | 1         | Pract       | 1
3  | 1         | Dolor       | 2
2  | 0         | Ipsum       | 2
6  | 2         | Maloc       | 1
4  | 0         | Amet        | 3

感谢您的建议

PS:我不想使用嵌套模型,因为我可以在菜单上进行大量更新,并且不想破坏它。

1 个答案:

答案 0 :(得分:1)

由于“a_horse_with_no_name”表示这是不可能的,因为MySQL不支持递归。所以我通过PHP和递归来完成它。

这个想法是做一个简单的递归,并尝试从当前元素中查找子元素。如果它有一些$ tree = array_merge($ tree,$ childs)就可以继续递归。