1

我是分层查询的新手,我已经阅读了大部分关于它的帖子。

我有一个想改进的查询。

我的场景是这样的:

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 吗?

4

0 回答 0