KAISOUテーブル
OYA KO FLG A
--- -- --- / \
A B 0 B C
A C 0 /|\ \
B D 1 D E F G
B E 0 / / \
B F 0 H I J
C G 0
D H 0
G I 0
G J 0
ルートを A として階層情報を出力する
ただし、フラグが1である親子関係 B-D より下の親子関係は出力しない。
出力結果
LEVEL OYA KO A
----- --- -- / \
1 A B B C
2 B D /|\ \
2 B E D E F G
2 B F / \
1 A C I J
2 C G
3 G I
3 G J
create table KAISOU(
OYA char(1),
KO char(1),
FLG number(1));
insert into KAISOU values('A','B',0);
insert into KAISOU values('A','C',0);
insert into KAISOU values('B','D',1);
insert into KAISOU values('B','E',0);
insert into KAISOU values('B','F',0);
insert into KAISOU values('C','G',0);
insert into KAISOU values('D','H',0);
insert into KAISOU values('G','I',0);
insert into KAISOU values('G','J',0);
commit;
select Level,OYA,KO
from KAISOU
Start With OYA ='A'
connect by prior KO = OYA
and prior flg != 1
order siblings by KO;
flg != 1 を階層問い合わせの条件として使ってます。