17,091
社区成员
发帖
与我相关
我的任务
分享
-- 算出表A每条记录对应表B的记录数
(select a.id,a.name,a.parentid,count(b.id) cn
from a,b
where a.id = b.id(+)
group by a.id,a.name,a.parentid) c
-- 通过connect by遍历树,获取每节点为root时下面所有节点
(select c.*,connect_by_root(id) rootid,connect_by_root(name) root_name
from
-- 算出表A每条记录对应表B的记录数
(select a.id,a.name,a.parentid,count(b.id) cn
from a,b
where a.id = b.id(+)
group by a.id,a.name,a.parentid) c
connect by parentid = prior id)
-- 计算每个root的下属节点的数量和
select rootid,root_name,sum(cn)
from
-- 通过connect by遍历树,获取每节点为root时下面所有节点
(select c.*,connect_by_root(id) rootid,connect_by_root(name) root_name
from
-- 算出表A每条记录对应表B的记录数
(select a.id,a.name,a.parentid,count(b.id) cn
from a,b
where a.id = b.id(+)
group by a.id,a.name,a.parentid) c
connect by parentid = prior id)
group by rootid,root_name;
with a as (
select 1 id, null parentid, '顶级' name from dual union
select 10, 1, '子级1' from dual union
select 11, 1, '子级2' from dual ),
b as (
select 1 sn, 10 id from dual union
select 2, 10 from dual union
select 3, 10 from dual union
select 4, 11 from dual union
select 5, 11 from dual union
select 6, 11 from dual union
select 7, 11 from dual)
-- 计算每个root的下属节点的数量和
select rootid,root_name,sum(cn)
from
-- 通过connect by遍历树,获取每节点为root时下面所有节点
(select c.*,connect_by_root(id) rootid,connect_by_root(name) root_name
from
-- 算出表A每条记录对应表B的记录数
(select a.id,a.name,a.parentid,count(b.id) cn
from a,b
where a.id = b.id(+)
group by a.id,a.name,a.parentid) c
connect by parentid = prior id)
group by rootid,root_name;
,如果A表该记录存在子记录则要算上子记录对应B表记录数之和
---记录数之和,10 对应3 11 对应4 不懂是什么逻辑?