0
在層次結構查詢中需要幫助,我有兩個表,一個保存元素之間的層次結構,第二個保存每個元素的活動警報。層次結構查詢 - 聚合節點
create table hrc (parent_id number, child_id number);
insert into hrc (parent_id,child_id) values (null,1);
insert into hrc (parent_id,child_id) values (1,2);
insert into hrc (parent_id,child_id) values (2,0);
insert into hrc (parent_id,child_id) values (0,76292);
insert into hrc (parent_id,child_id) values (0,96689);
insert into hrc (parent_id,child_id) values (0,12429);
insert into hrc (parent_id,child_id) values (0,10697);
insert into hrc (parent_id,child_id) values (0,60856);
insert into hrc (parent_id,child_id) values (0,99460);
insert into hrc (parent_id,child_id) values (76292,57120);
insert into hrc (parent_id,child_id) values (12429,25152);
commit
/
create table alarms (id number,element_id number) ;
insert into alarms (id,element_id) values (1,0);
insert into alarms (id,element_id) values (2,0);
insert into alarms (id,element_id) values (3,0);
insert into alarms (id,element_id) values (4,76292);
insert into alarms (id,element_id) values (5,76292);
insert into alarms (id,element_id) values (6,57120);
insert into alarms (id,element_id) values (7,57120);
insert into alarms (id,element_id) values (8,57120);
insert into alarms (id,element_id) values (9,25152);
insert into alarms (id,element_id) values (10,25152);
insert into alarms (id,element_id) values (11,12429);
commit;
下一個查詢是分層結構
with q (parent_id,child_id, hierlevel,root) as
(
select parent_id,child_id, 0,child_id root
from hrc
where parent_id = 0
UNION ALL
select hrc.parent_id,hrc.child_id ,q.hierlevel + 1 , q.root
from hrc
join
q
on (q.child_id=hrc.parent_id)
)select * from q
我想加入(左外),以報警表,每位元素,但只是爲了例如第一級alrams的計數,對於選擇PARENT_ID = 0 所需輸出爲:
COUNT ROOT
5 76292
3 12429
0 60856
0 10697
0 99460
0 96689
元素76292(5) - 他的自己和他的孩子(57120)的警報3有2。 12429(3) - 他自己的1和他的孩子2。 其餘有0個警報。
首選的方法是使用CTE,而不是通過連接。
感謝您的幫助。
感謝您的幫助,它的工作原理。 – TheRunningDBA