SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Oracleの階層問い合わせ

Oracleの階層問い合わせ(3)
(connect_by_IsLeaf,connect_by_root)

connect_by_IsLeaf,connect_by_rootを使ったOracleの階層問い合わせ3

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード SourceCode (864.0 B)

3. prior演算子

 prior演算子は、主にconnect by句で使われますが、select句で使用して、親の行の値を取得するといった用途もあります。サンプルを見てみましょう。

PriorT
ID OyaID Name
1 null AAAA
2 1 BBBB
3 2 CCCC
4 1 DDDD
5 4 EEEE
6 4 FFFF
7 1 GGGG
10 null HHHH
20 null IIII
21 20 JJJJ
22 21 KKKK
select句でのprior演算子の使用例
select ID,OyaID,Name,prior Name as OyaName,Level,
sys_connect_by_path(to_char(ID),',') as path
  from PriorT
start with OyaID is null
connect by prior ID = OyaID;
出力結果
ID OyaID Name OyaName Level path
1 null AAAA null 1 ,1
2 1 BBBB AAAA 2 ,1,2
3 2 CCCC BBBB 3 ,1,2,3
4 1 DDDD AAAA 2 ,1,4
5 4 EEEE DDDD 3 ,1,4,5
6 4 FFFF DDDD 3 ,1,4,6
7 1 GGGG AAAA 2 ,1,7
10 null HHHH null 1 ,10
20 null IIII null 1 ,20
21 20 JJJJ IIII 2 ,20,21
22 21 KKKK JJJJ 3 ,20,21,22

 SQLのイメージは、下記となります。木ごとに区切る赤線をイメージしてます。

SQLのイメージ
SQLのイメージ

最後に

 今回は、connect_by_IsLeaf擬似列,connect_by_root演算子,prior演算子を扱いました。次回は、connect by nocycle,connect_by_isCycle擬似列を扱います。

参考資料

  1. Advanced Oracle SQL Programming』 Laurent Schneider 著、Rampant TechPress、2008年12月
  2. select句でのprior演算子の使用例が掲載されてます。(英語)
  3. Oracle Database SQLリファレンス 10g リリース2 階層問合せ
  4. Oracleの公式マニュアルの階層問い合わせに関する部分です。(日本語)
  5. Oracle Database SQL Reference 10g Release2 Hierarchical Queries
  6. Oracleの公式マニュアルの階層問い合わせに関する部分です。(英語)

     

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Oracleの階層問い合わせ連載記事一覧

もっと読む

この記事の著者

山岸 賢治(ヤマギシ ケンジ)

趣味が競技プログラミングなWebエンジニアで、OracleSQLパズルの運営者。AtCoderの最高レーティングは1204(水色)。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2696 2009/09/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング