[英]How to get the final parent id column in oracle connect by sql
1像這樣創建表
CREATE TABLE oracle_connet_by_test ( item_id NUMBER PRIMARY KEY, parent_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'); commit;
2當我運行此腳本時,輸出將是
SQL> SELECT LEVEL, 2 ITEM_ID, 3 PARENT_ID, LPAD(' ', 4 * (LEVEL - 1)) || ITEM_DESC AS ITEM_DESC 4 FROM ORACLE_CONNET_BY_TEST 5 START WITH parent_Id = 0 6 CONNECT BY PRIOR 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
使用connect_by_root:
SELECT LEVEL,
ITEM_ID,
PARENT_ID, LPAD(' ', 4 * (LEVEL - 1)) || ITEM_DESC AS ITEM_DESC
, connect_by_root item_id AS SUPER_ID
FROM ORACLE_CONNET_BY_TEST
START WITH parent_Id = 0
CONNECT BY PRIOR ITEM_ID = PARENT_ID
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.