我有一个如下的亲戚表。
我想获取编号为1的所有亲戚,以及递归地获取他们在“Id”列或“Rel_id”列中出现的亲戚。对于id或rel_id = 1的情况,我希望抓取A、B、C、D、E、F、G、H,但不包括I。
我尝试在Oracle 12c中使用Oracle分层SQL。
| Name | Id | Rel_Id |
--------------------------
| A | 1 | 2 |
| B | 1 | 3 |
| C | 1 | 4 |
| D | 5 | 1 |
| E | 6 | 1 |
| F | 7 | 2 |
| G | 2 | 8 |
| H | 9 | 8 |
| I | 10 | 11 |
我想获取编号为1的所有亲戚,以及递归地获取他们在“Id”列或“Rel_id”列中出现的亲戚。对于id或rel_id = 1的情况,我希望抓取A、B、C、D、E、F、G、H,但不包括I。
我尝试在Oracle 12c中使用Oracle分层SQL。
select
dd.*
from relatives dd
start with id = 1
connect by id = prior rel_ID
union
select
dd.*
from relatives dd
start with rel_ID = 1
connect by Id = prior rel_ID;
它没有获取后续的相对ID(F或H)。
SELECT
语句两次。其中一个应该有connect by rel_id = prior id
。 - user5683823J 5 20
的行呢?5与1有关,5也与20有关,但您甚至在更正的查询中也找不到20。事实上,那是你需要做的吗?那比你想象的要难得多。 - user5683823