階層問い合わせ - 葉を抽出する
CONNECT BY 句を使用する事で親子関係をたどり階層展開することができますが、その階層の終着点である「葉」だけを抽出することができます。例えば、部品表の中である材料が最終的にどのような製品に使われているのか知りたい時など利用できそうです。
connect_by_IsLeaf擬似列
次のようなツリー構造があるとします。
この中からオレンジ色の「葉」だけを抽出するには、connect_by_IsLeaf 疑似列を使います。
connect_by_IsLeaf 疑似列を使うと、そのノードが「葉」であれば 1 、「葉」でなければ 0 を返します。
SELECT parents,children
FROM TREE_NODE
WHERE connect_by_IsLeaf = 1
START WITH parents = 'A'
CONNECT BY PRIOR children = parents;
「葉」にあたるレーコードが抽出されることを確認することができました。
parents children
---------- -----------
A D
B E
B F
C E
C G