QA@IT

SQL階層問い合わせについて

3643 PV

初心者です。
Oracle 11g(11.2.0.1.0)を利用しています。

親情報を持ったレコードから展開情報を取得したいのですが
うまくいきません。SQLで取得するのは不可能でしょうか?

階層問い合わせは色々試してみました。
よろしくお願いします。

id oyaId

1 null
10 1
11 10
111 11
11A 111

取得したい結果

oyaid Id

1 10
1 11
1 111
1 11A
10 11
10 111
10 11A
11 111
11 11A
111 11A

回答

CONNECT_BY_ROOT演算子はルート行のデータを戻します.

with t as (select '1' as id, null as oyaId from dual
union all select '10' as id, '1' as oyaId from dual
union all select '11' as id, '10' as oyaId from dual
union all select '111' as id, '11' as oyaId from dual
union all select '11A' as id, '111' as oyaId from dual)
select CONNECT_BY_ROOT oyaId oyaId, id from t
start with oyaId is not null
connect by prior id = oyaId;

OYAID ID

1 10
1 11
1 111
1 11A
10 11
10 111
10 11A
11 111
11 11A
111 11A

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。