我是分层查询的新手,我已经浏览了大部分帖子。
我有一个想要改进的查询。
我的情景是这样的:
Sample
-------
ID,
NAME,
PARENT_ID
表数据如下:
ID NAME PARENT_ID
-----------------------
1 A (null)
2 B 1
3 C 2
4 D 1
我希望结果是这样的:
ID NAME PARENT_ID IS_LEAF LEVEL DIRECT_CHILDREN_COUNT
-------------------------------------------------------------------
1 A (null) 0 1 2
2 B 1 0 2 1
3 C 2 1 3 0
4 D 1 1 2 0
我写了以下查询,它给出了除DIRECT_CHILDREN_COUNT以外的所有列
SELECT ID, NAME, PARENT_ID, CONNECT_BY_LEAF AS IS_LEAF, LEVEL FROM SAMPLE
START WITH PARENT_ID = null CONNECT BY PRIOR ID = PARENT_ID
关于如何获取节点的所有孩子(不仅仅是直接孩子)的计数,有很多帖子,这些不适用于我,因为
1.我只希望直接孩子数 2.如果可能的话,我想在不使用 join 的情况下实现这一点。
我不知道如何将直接子项计为每个记录的列值。 无论如何我可以使用分层查询获得DIRECT_CHILDREN_COUNT吗?