1 このようにテーブルを作成します
CREATE TABLE oracle_connet_by_test ( item_id NUMBER PRIMARY KEY, 親 ID NUMBER、 item_desc VARCHAR2(8)); INSERT INTO oracle_connet_by_test VALUES(1, 0, 'AAA'); INSERT INTO oracle_connet_by_test VALUES(2, 0, 'BBB'); INSERT INTO oracle_connet_by_test VALUES(3, 1, 'CCC'); INSERT INTO oracle_connet_by_test VALUES(4, 2, 'DDD'); INSERT INTO oracle_connet_by_test VALUES(5, 1, 'EEE'); INSERT INTO oracle_connet_by_test VALUES(6, 3, 'FFF'); INSERT INTO oracle_connet_by_test VALUES(7, 3, 'GGG'); 専念;
2 このスクリプトを実行すると、出力は次のようになります
SQL> 選択レベル、 2 ITEM_ID、 3 PARENT_ID, LPAD(' ', 4 * (レベル - 1)) || ITEM_DESC AS ITEM_DESC 4 ORACLE_CONNET_BY_TEST から 5 親 ID = 0 で開始 6 前の ITEM_ID = PARENT_ID による接続 7 ; LEVEL ITEM_ID PARENT_ID ITEM_DESC ---------- ---------- ---------- ----------- 1 1 0 AAA 2 3 1 CCC 3 6 3 FFF 3 7 3 GGG 2 5 1 EEE 1 2 0 BBB 2 4 2 DDD
3 質問: この結果が必要な場合、コードはどのように記述すればよいですか?
LEVEL ITEM_ID PARENT_ID ITEM_DESC SUPER_ID ---------- ---------- ---------- ---------------- ---- ------ 1 1 0 AAA 1 2 3 1 CCC 1 3 6 3 FFF 1 3 7 3 GGG 1 2 5 1 EEE 1 1 2 0 BBB 2 2 4 2 DDD 2