我正在为现有软件(Atlassian Jira)构建 SQL QUERY,但无法对数据库进行任何更改。
我们在 Jira 中确实有几个问题(表:jiraissue),它们在单独的表(表:工作日志)中有 0 到 n 个工作日志条目。每个工作日志还具有记录工作的用户的用户 ID,并且该用户是一个或多个用户组的成员。这些问题(表:jiraissue)中的每一个都与另一个问题(在另一个 jira 项目中,但我认为这与非 jira 专家无关)相关联,该问题被称为“成本单位”。
意味着我们想知道每个“成本单位”记录了多少工作。因此,我们需要有一个查询来返回所有“成本单位”和每个用户组在链接问题上记录的时间。最后一点是,“成本单位”是市场,有一个组件可以知道哪些“成本单位”属于一起。因此,要仅显示与报表用户相关的“成本单位”,查询正在使用组件进行选择。
到目前为止我发现的效果很好,但是返回的“成本单位”行与链接问题一样多,但我需要所有链接问题的总和。
我应该能够以某种方式总结子查询的所有结果,但这些似乎是不可能的。我还尝试使用 FROM 之后的子选择语句,但后来我无法使用 jiraissue.id。
这是我的实际查询:
SELECT
myktr.pkey,
myktr.summary,
sum(worklog_dev),
(SELECT
sum(worklog.timeworked)
from
worklog
WHERE worklog.issueid = jiraissue.id
AND worklog.author IN
(SELECT
child_name
FROM
CWD_MEMBERSHIP
where lower_parent_name = 'jira-team-sdqm')) AS worklog_sdqm,
(SELECT
sum(worklog.timeworked)
from
worklog
WHERE worklog.issueid = jiraissue.id
AND worklog.author IN
(SELECT
child_name
FROM
CWD_MEMBERSHIP
where lower_parent_name = 'jira-productowner')) AS worklog_pm
FROM
component,
nodeassociation,
jiraissue AS myktr
INNER JOIN issuelink
ON (issuelink.source = myktr.id)
INNER JOIN jiraissue
ON (
issuelink.destination = jiraissue.id
),
(SELECT
sum(worklog.timeworked) AS worklog_dev
FROM
worklog
WHERE worklog.issueid = jiraissue.id
AND worklog.author IN
(SELECT
child_name
FROM
CWD_MEMBERSHIP
where lower_parent_name = 'jira-developers')) AS worklog_dev_table
WHERE myktr.pkey IN
(SELECT
jiraissue.pkey
from
jiraissue,
project
WHERE project.id = jiraissue.project
AND project.pkey = 'KTR')
AND component.ID = nodeassociation.SINK_NODE_ID
and myktr.id = nodeassociation.SOURCE_NODE_ID
and nodeassociation.ASSOCIATION_TYPE = 'IssueComponent'
and component.cname = 'Project-Component' ;
你对我有什么建议吗?仅供参考:我们正在使用 postgreSQL。
最好的问候,斯特凡