既存のソフトウェア(Atlassian Jira)に対してSQLクエリを作成していますが、データベースに変更を加えることができません。
Jira(テーブル:jiraissue)内に、別のテーブル(テーブル:worklog)に0からnのワークログエントリを持ついくつかの問題があります。各作業ログには、作業を記録したユーザーのユーザーIDもあり、ユーザーは1つ以上のユーザーグループのメンバーです。これらの各問題(表:jiraissue)は、「コスト単位」として対応する別の問題(別のjiraプロジェクト内ですが、これは、非jiraの専門家には関係ないと思います)にリンクされています。
つまり、各「コスト単位」に記録されている作業の数を知りたいということです。したがって、すべての「コスト単位」と、リンクされた問題についてユーザーグループごとに記録された時間を返すクエリが必要です。最後のポイントは、「コスト単位」は、どの「コスト単位」が一緒に属しているかを知るためのコンポーネントを備えた市場であるということです。したがって、レポートユーザーに関連する「コスト単位」のみを表示するには、クエリはこれを選択するためのコンポーネントを使用しています。
私がこれまでに見つけたものは非常にうまく機能しますが、リンクされた問題があるのと同じ数の「コスト単位」の行を返しますが、すべてのリンクされた問題の合計が必要です。
どういうわけか、サブクエリのすべての結果を合計できるはずですが、これらは不可能のようです。FROMの後にsubselectステートメントを操作しようとしましたが、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' ;
私に何か提案はありますか?fyi:postgreSQLを使用しています。
よろしく、ステファン