sql - 创建递归查询,其中列值需要基于另一列获取 | 甲骨文
问题描述
我有两张表,其中一张表有问题列表,另一张表有问题 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_num
和parent_project_key
解决方案
我自己解决了。我改进了获取 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
推荐阅读
- django - 仅在管理员在 django 中接受用户后,如何让用户注册?
- django - gunicorn + django - https 请求卡住
- java - 具有不同页码的 Viewpager
- sql - JSON_AGG 作为对象而不是数组 - PostgresSQL
- python - 布尔索引,尝试使用两个条件按标签搜索,但布尔与、按位 & 和 numpy logical_and 都返回错误
- ubuntu - Ipsec (strongswan) vpn 无法与 ubuntu 19.04 作为客户端正常工作?
- asp.net-core - 如何读取/写入不同域的 cookie(.net 核心)
- python - python字符串比较中不同类型的撇号
- android - 解析 adb shell 输出时的奇怪行为
- button - 单选按钮复制后删除时如何使id出现