我是分层查询的新手,我已经阅读了大部分关于它的帖子。
我有一个想改进的查询。
我的场景是这样的:
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.如果可能的话,我想在不使用joins的情况下实现这一点。
我不知道如何将直接子项计为每条记录的列值。无论如何我可以使用分层查询获得 DIRECT_CHILDREN_COUNT 吗?