我有一個heirarchical表格式除去CONNECT-BY查詢重複的子樹在Oracle
CREATE TABLE tree_hierarchy (
id NUMBER (20)
,parent_id NUMBER (20)
);
INSERT INTO tree_hierarchy (id, parent_id) VALUES (2, 1);
INSERT INTO tree_hierarchy (id, parent_id) VALUES (4, 2);
INSERT INTO tree_hierarchy (id, parent_id) VALUES (9, 4);
當我運行查詢: -
SELECT id,parent_id,
CONNECT_BY_ISLEAF leaf,
LEVEL,
SYS_CONNECT_BY_PATH(id, '/') Path,
SYS_CONNECT_BY_PATH(parent_id, '/') Parent_Path
FROM tree_hierarchy
WHERE CONNECT_BY_ISLEAF<>0
CONNECT BY PRIOR id = PARENT_id
ORDER SIBLINGS BY ID;
結果我得到的是這樣的: -
"ID" "PARENT_ID" "LEAF" "LEVEL" "PATH" "PARENT_PATH"
9 4 1 3 "/2/4/9" "/1/2/4"
9 4 1 2 "/4/9" "/2/4"
9 4 1 1 "/9" "/4"
但我需要一個Oracle SQL查詢,讓我只有這個
"ID" "PARENT_ID" "LEAF" "LEVEL" "PATH" "PARENT_PATH"
9 4 1 3 "/2/4/9" "/1/2/4"
這是一個更簡單的例子,我有更多的1000個記錄在這樣的方式。當我運行上述查詢時,它正在生成許多重複。可以給我一個通用的查詢,根與出局重複。感謝提前的幫助
感謝您reply.But在我而言這不會work.Your解決方案需要的根在advance.In我的情況是已知的,數據庫可能有多個根和我希望所有可能的葉子都與根外鏈組合重複。 – Dilip
但是,沒有重複。查詢結果中沒有重複的行。它返回所有葉子的完整路徑。所以,你必須考慮更多的條件,那將只返回你需要的行。 也許我不明白這個問題,但試圖找到這些路徑不是從父母到孩子,而是在相反的方向,並從樹葉開始。我認爲這就是你需要的。 – bdshadow