Tuesday, May 10, 2011

Oracle – Connect By Prior

– Populate data
set feedback off
create table test_connect_by (
parent     number,
child      number,
constraint uq_tcb unique (child)
);
insert into test_connect_by values ( 5, 2);
insert into test_connect_by values ( 5, 3);
insert into test_connect_by values (18,11);
insert into test_connect_by values (18, 7);
insert into test_connect_by values (17, 9);
insert into test_connect_by values (17, 8);
insert into test_connect_by values (26,13);
insert into test_connect_by values (26, 1);
insert into test_connect_by values (26,12);
insert into test_connect_by values (15,10);
insert into test_connect_by values (15, 5);
insert into test_connect_by values (38,15);
insert into test_connect_by values (38,17);
insert into test_connect_by values (38, 6);
insert into test_connect_by values (null, 38);
insert into test_connect_by values (null, 26);
insert into test_connect_by values (null, 18);
– Main Query
SELECT LPAD(‘ ‘,2*(level-1)) || TO_CHAR(child) s
FROM test_connect_by
START WITH parent IS NULL
CONNECT BY PRIOR child = parent;

No comments:

Post a Comment