【发布时间】:2021-04-16 06:50:30
【问题描述】:
借助 ORACLE 功能“CONNECT BY”,我想在查询中从子 ID 中检索祖父(顶级)和父的信息(ID 和代码)。最好的办法是检索完整的历史数据(同一查询中的所有祖先和子代)。
这里是数据:
ID | CODE | PARENT_ID
5953 | COMPANY |
230928 | D | 5953
7246 | C | 230928
243928 | C.5 | 7246
240961 | C.3 | 7246
7287 | C.4 | 7246
7286 | C.2 | 7246
7285 | C.1 | 7246
这里是我想要的结果:
CHILDREN_ID | CHILDREN_CODE | PARENT_ID | PARENT_CODE | GRANDPARENT_CODE
5953 | COMPANY | | |
230928 | D | 5953 | COMPANY |
7246 | C | 230928 | D | COMPANY
243928 | C.5 | 7246 | C | D
240961 | C.3 | 7246 | C | D
7287 | C.4 | 7246 | C | D
7286 | C.2 | 7246 | C | D
7285 | C.1 | 7246 | C | D
我创建了这个查询:
SELECT ID AS "CHILDREN_ID", CODE AS "CHILDREN_CODE", PARENT_ID , PARENT_CODE, CONNECT_BY_ROOT CODE "GRANT_PARENT_CODE"
FROM PERSONS
WHERE LEVEL > 1
CONNECT BY PRIOR ID = PARENT_ID
但我没有检索到祖父母的正确信息。
你能帮我解决这个问题吗?
【问题讨论】:
-
您好,请向我们提供测试数据和所需的输出
-
你需要
start with parent_id is null从根建立一个层次结构并使用join到persons表来获取父级的父级,因为connect_by_root从一个根目录中检索信息等级制度
标签: sql oracle hierarchical-data levels