好的,我有一个TaskID和ChildOf作为字段的表。。。所以。。。
TaskID是唯一的,并且是自动递增的

If ChildOf == 0, then it has no Parent (top tier)...

If ChildOf != 0, then it is assigned TaskId of its Parent

问题:如何形成一个查询来给出这样的结果。。。
Parent Task
 Child Task
 Child Task

Parent Task
 Child Task

Etc.. etc...

如果我用两张桌子会更容易吗?我将在这个表中有很多项,所以我希望使用尽可能少的查询(循环)。
任何帮助都非常感谢。
谢谢

最佳答案

我认为有一种方法可以让你不用join来做soting。。。。
如下所示-

select * from table_name order by decode(ChildOf,0,TaskID,ChildOf),ChildOf

这将提供所需的输出。。。
表示父节点,然后是相应的子节点。。。
然后是第二个父节点等等。。
有一件事我不知道docode函数是否也在我的sql上运行。。
如果没有,则可以使用以下查询-
select * from table_name order by case when ChildOf=0 then TaskID else ChildOf end,ChildOf

10-05 19:54