首页 > 解决方案 > 创建递归查询,其中列值需要基于另一列获取 | 甲骨文

问题描述

我有两张表,其中一张表有问题列表,另一张表有问题 id 形式的父问题。

我只提到必需的列

第一张桌子

ID、ISSUENUM、项目密钥


第二张桌子

JSON_VALUE 的 parent_id 是第一个表中的 ID


最终结果预期

ID、ISSUENUM、项目密钥、PARENT_ISSUENUM、PARENT_PROJECT_KEY

到目前为止我有查询,但无法进行分层/递归查询

(select json_value(EP.JSON_VALUE, '$.parent_id' RETURNING NUMBER)as xyz
from JIR.ENTITY_PROPERTY EP where EP.ENTITY_ID = JI.ID AND EP.ENTITY_NAME = 'IssueProperty' 
AND json_exists(EP.JSON_VALUE, '$.parent_id'))as parent_id
from jir.project p,jir.jiraissue JI
where p.id = ji.project
and (p.pkey = 'ABCDEF' OR p.pkey = 'UVWXYZ')

如何使用我作为列的这个 IDparent_id并使用它来获取parent_issue_numparent_project_key

标签: sqloracle

解决方案


我自己解决了。我改进了获取 parent_id 的查询并使用列查询本身获取 parent_key

select  JI.ID, 
(select P.PKEY||'-'||ji2.issuenum
from JIR.ENTITY_PROPERTY EP 
inner join jir.jiraissue JI2 on ji2.id=json_value(EP.JSON_VALUE, '$.parent_id' RETURNING NUMBER)
inner join jir.project p2 on p2.id=ji2.project
where EP.ENTITY_ID = JI.ID AND EP.ENTITY_NAME = 'IssueProperty' 
AND json_exists(EP.JSON_VALUE, '$.parent_id'))as parent_id
from jir.project p,jir.jiraissue JI
where p.id = ji.project
and (p.pkey = 'ABCDEF' OR p.pkey = 'UVWXYZ')

这个小改动解决了这个问题

inner join jir.jiraissue JI2 on ji2.id=json_value(EP.JSON_VALUE, '$.parent_id' RETURNING NUMBER)
inner join jir.project p2 on p2.id=ji2.project

推荐阅读