好的,我有一个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