【发布时间】:2011-04-16 17:45:51
【问题描述】:
如何对 SELECT 语句的记录进行排序,以便它们代表一棵有效的树?
我所有的尝试都显示子节点嵌套在错误的父节点下。实现这种排序的最可靠方法是什么?
数据
ID Parent ID Title
--------------------------------------------
0 NULL Root
1 0 Node A
2 0 Node B
3 1 Sub-Node C
4 1 Sub-Node D
5 3 Sub-Node E
输出
ID Parent ID Title
--------------------------------------------
0 NULL Root
1 0 Node A
3 1 Sub-Node C
5 3 Sub-Node E
4 1 Sub-Node D
2 0 Node B
数据可视化
Root
Node A
Sub-Node C
Sub-Node E
Sub-Node D
Node B
【问题讨论】:
-
虽然下面提供的示例显示了一些非常酷的查询,但我不认为提供可视化是数据层的工作。使用 PHP,您可以更轻松地做到这一点(并且在视觉上更具吸引力)。
-
@Blindy 我同意你的看法。我希望有一种性能有效的方法可以通过简单的查询来检索结果,但看起来不会很容易。想到的唯一解决方案是使用 PHP 将其排序为一系列临时数组。我只需要一个平面数组,但需要一个按邻接排序的数组。
-
看看这个答案是否相同:stackoverflow.com/a/33699713/5559741