我有一个带有以下列的表的 Oracle 数据库:
ID | PARENTID | DETAIL1
------------------------
1 | NULL | BLAH1
2 | 1 | BLAH2
3 | 2 | BLAH3
4 | 2 | BLAH4
5 | NULL | BLAH5
6 | 5 | BLAH6
7 | 6 | BLAH7
8 | 5 | BLAH8
9 | 5 | BLAH9
10 | 8 | BLAH10
我准备了一个自我加入
SELECT PARENT.ID AS "PID",
PARENT.DETAIL1 AS "PDETAIL1",
CHILD.ID AS "CID",
CHILD.DETAIL1 AS "CDETAIL1"
FROM table1 CHILD
LEFT OUTER JOIN table1 PARENT
ON PARENT.ID = CHILD.PARENTID
WHERE PARENTID IS NOT NULL;
输出如下所示:
PID | PDETAIL1 | CID | CDETAIL1|
--------------------------------
1 | BLAH1 | 2 | BLAH2 |
2 | BLAH2 | 3 | BLAH3 |
2 | BLAH2 | 4 | BLAH4 |
5 | BLAH5 | 6 | BLAH6 |
6 | BLAH6 | 7 | BLAH7 |
5 | BLAH5 | 8 | BLAH8 |
5 | BLAH5 | 9 | BLAH9 |
8 | BLAH8 | 10 | BLAH10 |
很直接。我想知道这个自连接是否可以作为分层/递归查询来完成。最大嵌套深度为 3。目标输出应如下所示:
GPID | GPDETAIL1 | PID | PDETAIL1 | CID | CDETAIL1 |
---------------------------------------------------
1 | BLAH1 | 2 | BLAH2 | 3 | BLAH3 |
1 | BLAH1 | 2 | BLAH2 | 4 | BLAH4 |
5 | BLAH5 | 6 | BLAH6 | 7 | BLAH7 |
5 | BLAH5 | 8 | BLAH8 | 10 | BLAH10 |
5 | BLAH5 | 9 | BLAH9 | NULL | NULL |
谷歌没有帮助我,有大量与分层查询相关的信息,但包括自联接和分层查询在内的任何内容都没有,而且大多数问题似乎都是相似的(表面上),但没有什么能引导我找到我需要的东西。我是一个 SQL 新手,所以除非答案是具体的,否则我可能会错过它。