jwd*_*aan 5 sql oracle plsql connect-by oracle9i
我在Oracle 9i数据库表中有一个父子关系
喜欢:
parent | child
1 | 2
2 | 3
2 | 4
null | 1
1 | 8
Run Code Online (Sandbox Code Playgroud)
我需要得到一个给定孩子的绝对父母.说,我有孩子4,它必须给我父母:1
我已经看过CONNECT BY,但我找不到解决方案.
您可以使用 CONNECT BY 查询来构建父母列表,然后进行过滤:
SQL> WITH tree AS (
2 SELECT 1 parent_id, 2 child_id FROM DUAL
3 UNION ALL SELECT 2 , 3 FROM DUAL
4 UNION ALL SELECT 2 , 4 FROM DUAL
5 UNION ALL SELECT null, 1 FROM DUAL
6 UNION ALL SELECT 1 , 8 FROM DUAL
7 )
8 SELECT child_id
9 FROM (SELECT *
10 FROM tree
11 CONNECT BY PRIOR parent_id = child_id
12 START WITH child_id = 4)
13 WHERE parent_id IS NULL;
CHILD_ID
----------
1
Run Code Online (Sandbox Code Playgroud)