Oracleのstart with/connect byで、子から親へ逆順のツリーを取得する。
これを元にSQLを作成。
でも、今回は指定されたIDから親をたどって、自分とその親を全部取りたかったので、start with以降の部分を変えてみた。
通常だとこんな感じ。
select ID,OyaID,Level
from IDTable
start with OyaID is null
connect by prior ID = OyaID;
今回はこんな感じ。
select ID,OyaID,Level
from IDTable
start with ID = 7
connect by prior OyaID = ID;
通常のツリーとは逆順のツリーを作成して、自分(この場合ID=7)を基準に親コードを取得するように作成。
この発想が思い浮かばなくてだいぶ悩んだのでメモ。
ちなみに、別テーブルにIDと紐付く任意のデータがあって、それと結合してるときは外部結合しないと親のデータは取れないので注意。