分层查询:获取每个节点的直接子计数

时间:2013-08-08 06:53:56

标签: sql connect-by hierarchical-trees hierarchical-query

我是分层查询的新手,我已经浏览了大部分帖子。

我有一个想要改进的查询。

我的情景是这样的:

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

0 个答案:

没有答案