我是甲骨文新手...比较而言...
我正在尝试在我继承的 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。
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;
提前致谢。