1
我是一個Oracle新手...相對來說...Oracle CTE尋找祖父母和兒童的孩子
我想在我已經繼承的Oracle表上使用CTE。這比我所希望的要複雜一點,因爲「最高級別」沒有明確定義。
create table testConnectBy (parent number, child number);
insert into testConnectBy values (1, 1);
insert into testConnectBy values (1, 11);
insert into testConnectBy values (1, 12);
insert into testConnectBy values (2, 2);
insert into testConnectBy values (2, 13);
insert into testConnectBy values (11, 11);
insert into testConnectBy values (11, 20);
insert into testConnectBy values (11, 21);
insert into testConnectBy values (12, 12);
insert into testConnectBy values (12, 22);
insert into testConnectBy values (12, 23);
insert into testConnectBy values (12, 24);
insert into testConnectBy values (13, 13);
insert into testConnectBy values (13, 30);
insert into testConnectBy values (13, 31);
insert into testConnectBy values (30, 30);
insert into testConnectBy values (30, 40);
此查詢獲取所有所需的行,但有一些重複的(這是一個問題,我想,第一部分是怎麼回事最好刪除)。我必須包含nocycle,因爲存在循環問題(parent == child)。
select *
from testConnectBy
start with parent = '1'
connect by nocycle prior child = parent;
接下來的問題是,我希望能夠輸入11例如,並找出所有的父母和孩子。我不知道哪些父母或孩子與11有關。只是我需要通過使用11來找到它們。
此查詢只返回11的孩子。有沒有什麼方法可以返回兩個「方向」?
select *
from testConnectBy
start with parent = '11'
connect by nocycle prior child = parent;
在此先感謝。
感謝您的迴應。不幸的是,在你最後的查詢中,你使用了PARENT ='1'。我不會知道父母是'1'。只有'11'在層次結構中。 –
我從1開始取整個層級。然後過濾出11 – SriniV
啊,只是注意到它都在路徑中。所以我不得不提取那個領域並且用它做一些事情。 –