Oracle11g の (id, parent_id) のような構造のテーブルがあります。
id parent_id
---------------
1 (null)
2 (null)
3 1
4 3
5 3
6 2
7 2
これらの各IDに階層的にリンクされているすべての行を取得するためにクエリを実行したいので、結果は次のようになります。
root_id id parent_id
------------------------
1 3 1
1 4 3
1 5 3
2 6 2
2 7 2
3 4 3
3 5 3
私はかなり長い間connect by
andstart with
に苦労してきましたが、次のようなクエリで必要な結果の一部しか得られません。
select connect_by_root(id) root_id, id, parent_id from my-table
start with id=1
connect by prior id = parent_id
for
完全な結果を得るためにループを使用したくありません。
何か案が ?
敬具、ジェローム・ルフレール
PS:最初の回答の後に編集し、必要な結果の一部を忘れていたことに気づきました...