以下のようなテーブル構造
col1 | col2 | col3 | 1 |空|空| 2 | 1 | Xyz | 3 | 1 | abc | 4 | 2 | abc |
注Col2
は、子レコードの親レコードを決定しています。
col3='abc'
を検索して結果を取得すると、次のような結果が得られます。
1 |空|空| 2 | 1 | Xyz | 3 | 1 | abc | 4 | 2 | abc |
テーブル定義とサンプルデータ:
CREATE TABLE ForgeRock
(
id int,
Dependency varchar(7),
Prod varchar(55),
Prod2 varchar(22)
) ;
INSERT ALL
INTO ForgeRock (id, Dependency, Prod, Prod2)
VALUES (1, '', '','')
INTO ForgeRock (id, Dependency, Prod, Prod2)
VALUES (2, '1', 'Full','101')
INTO ForgeRock (id, Dependency, Prod, Prod2)
VALUES (3, '1', 'Robust','101')
INTO ForgeRock (id, Dependency, Prod, Prod2)
VALUES (4, '2', 'Robust','102')
SELECT * FROM dual ;
このような階層クエリは、CONNECT BY
を使用して次のように記述できます。
SQL> set null "empty"
SQL> select id, dependency, prod, prod2 from forgerock
connect by prior dependency = id start with prod2 = '102' order by level desc;
ID DEPENDE PROD PROD2
---------- ------- ---------- ----------------------
1 empty empty empty
2 1 Full 101
4 2 Robust 102