Je suis en train de construire une REQUÊTE SQL pour un logiciel existant (Atlassian Jira) et je ne suis pas en mesure d'apporter des modifications à la base de données.
Nous avons plusieurs problèmes dans Jira (tableau : jiraissue) qui ont de 0 à n entrées de journal de travail dans un tableau séparé (tableau : worklog). Chaque journal de travail a également un identifiant d'utilisateur de l'utilisateur qui a enregistré le travail et l'utilisateur est membre d'un ou plusieurs groupes d'utilisateurs. Chacun de ces problèmes (tableau : jiraissue) est lié à un autre problème (dans un autre projet jira, mais cela - je suppose - n'est pas pertinent pour les non-experts de Jira) qui correspond comme "unité de coût".
cela signifie que nous voulons savoir combien de travail est enregistré sur chaque "unité de coût". donc nous avons besoin d'une requête qui retourne toutes les "unités de coût" et le temps enregistré par groupe d'utilisateurs sur les problèmes liés. le dernier point est que les "unités de coût" sont marquées avec un composant pour savoir quelles "unités de coût" appartiennent ensemble. donc pour afficher seulement les "unités de coût" qui sont pertinentes pour l'utilisateur du rapport, la requête utilise le composant pour le sélectionner.
ce que j'ai découvert jusqu'à présent fonctionne assez bien, mais retourne autant de lignes pour l'"unité de coût" qu'il y a de problèmes liés, mais j'ai besoin de la somme de tous les problèmes liés.
je devrais d'une manière ou d'une autre être en mesure de totaliser tous les résultats des sous-requêtes, mais cela ne semble pas possible. J'ai aussi essayé de travailler avec les déclarations de sous-sélection après FROM, mais alors je ne suis pas en mesure d'utiliser jiraissue.id.
voici ma requête actuelle :
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' ;
avez-vous des suggestions pour moi? FYI : nous travaillons avec PostgreSQL.
meilleures salutations, stefan