假如有表结构:
id pid
1 0
2 1
3 1
4 3
5 1
6 2我要计算 ID=1 他的子节点就有(2,3,4,5,6)也就是5个子节点 一次类推
ID,节点数量
1,5
2,1
3,1
4,0
5,0
5,0就是求每个叶子的宽度 求高手指点 小弟没分儿 求大哥们帮助
id pid
1 0
2 1
3 1
4 3
5 1
6 2我要计算 ID=1 他的子节点就有(2,3,4,5,6)也就是5个子节点 一次类推
ID,节点数量
1,5
2,1
3,1
4,0
5,0
5,0就是求每个叶子的宽度 求高手指点 小弟没分儿 求大哥们帮助
with t as (
select '1' id,'0' pid from dual
union all
select '2' id,'1' pid from dual
union all
select '3' id,'1' pid from dual
union all
select '4' id,'3' pid from dual
union all
select '5' id,'1' pid from dual
union all
select '6' id,'2' pid from dual
)
select t.id,
(select count(1)
from t tt
start with tt.pid = t.id
connect by prior tt.id = tt.pid)
from t
1,5
2,1
3,1
4,0
5,0
5,0
就是计算出每个ID 子节点的数量啊