階層問い合わせ
テーブルにIDと親IDを持ち階層構造をあらわすテーブルがあるとき、階層で表示されると便利です。
Oracleではconnect by句を使ってデータの階層表示ができます。
select lpad(' ',2*(level)) || name name from emp start with parent_id is null connect by prior id = parent_id
といった感じです。
start withで一番上の階層を指定して、connect byで親子関係を指定します。
これだけだとデータが親子関係で整列されるだけなので、
select文で階層表示するようにしてやります。
lpad(' ',2*(level))で階層がひとつ下がるごとに空白を2ついれて階層表示してやります。
表示されるイメージは
社長 島耕作 専務 島耕作 部長 島耕作 課長 島耕作 平社員 島耕作 平社員 田中 部長 山田新作 課長 山田新作 平社員 中村
とこんな感じです。