oracle 树形结构表数据统计的问题?

whcasp 2005-11-07 03:03:38
树:
tree
nodeid,nodename,parentid
1 a1 0
2 a2 0
3 b1 1
4 b2 1
5 c1 3
6 c2 4

数据表
data1
logid,nodeid,data1,data2
1 1 5 5
2 3 3 4
3 6 3 4

parentid = 0 显示parentid的node。他的data1,data2为所有子节点的汇总

如:
查询parentid=0时应显示
nodeid,nodename,data1,data2
1 a1 11 13
2 a2 0 0

我知道用oracle可以用connect by 和 start with 查一个节点的所有子节点和自己,
但不知道怎么统计了,有点晕了
...全文
342 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzwind5 2005-11-07
  • 打赏
  • 举报
回复
比较土的方法

zhang@zhang>select 1 nodeid, 'a1' nodename, sum(data1) data1, sum(data2) data2 from (
2 select ts1.*, nvl(DATA1, 0) DATA1, nvl(DATA2, 0) DATA2 from ts1, data1 where ts1.NODEID=data1.N
ODEID(+))
3 start with PARENTID=0 and NODENAME='a1'
4 connect by prior NODEID=PARENTID
5 union
6 select 1 nodeid, 'a2' nodename, sum(data1) data1, sum(data2) data2 from (
7 select ts1.*, nvl(DATA1, 0) DATA1, nvl(DATA2, 0) DATA2 from ts1, data1 where ts1.NODEID=data1.N
ODEID(+))
8 start with PARENTID=0 and NODENAME='a2'
9 connect by prior NODEID=PARENTID;

NODEID NO DATA1 DATA2
---------- -- ---------- ----------
1 a1 11 13
1 a2 0 0
zzwind5 2005-11-07
  • 打赏
  • 举报
回复
不知道怎么把两个结果合到一起
zhang@zhang>select sum(data1), sum(data2) from (
2 select ts1.*, nvl(DATA1, 0) DATA1, nvl(DATA2, 0) DATA2 from ts1, data1 where ts1.NODEID=data1.N
ODEID(+))
3 start with PARENTID=0 and NODENAME='a2'
4 connect by prior NODEID=PARENTID;

SUM(DATA1) SUM(DATA2)
---------- ----------
0 0



zhang@zhang>select sum(data1), sum(data2) from (
2 select ts1.*, nvl(DATA1, 0) DATA1, nvl(DATA2, 0) DATA2 from ts1, data1 where ts1.NODEID=data1.N
ODEID(+))
3 start with PARENTID=0 and NODENAME='a1'
4 connect by prior NODEID=PARENTID;

SUM(DATA1) SUM(DATA2)
---------- ----------
11 13
zzwind5 2005-11-07
  • 打赏
  • 举报
回复
zhang@zhang>select sum(data1), sum(data2) from (
2 select ts1.*, nvl(DATA1, 0) DATA1, nvl(DATA2, 0) DATA2 from ts1, data1 where ts1.NODEID=data1.N
ODEID(+))
3 start with PARENTID=0
4 connect by prior NODEID=PARENTID;

SUM(DATA1) SUM(DATA2)
---------- ----------
11 13
whcasp 2005-11-07
  • 打赏
  • 举报
回复
没人知道我就用两个sql查了
whcasp 2005-11-07
  • 打赏
  • 举报
回复
a1 = a1+b1+b2+c1+c2 = 5+3+0+0+3 = 11
zzwind5 2005-11-07
  • 打赏
  • 举报
回复
不明白你那11是怎么算出来的

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧