我尝试四处询问和谷歌搜索,最终得到了一个在所有可能的意义上杀死数据库的查询。
我有 3 个表:
jiraissue
保留有关 jira 票证(分配给谁)的信息。
changegroup
这会保留更改日期、正在更改的工单的 ID 以及更改详细信息的 ID。
changeitem
包含更改 ID、更改字段和新/旧值。
我想要以下输出:
[解决时间]、[分配日期]、[解决日期]、[jira_ticket_details_from_jiraissue]
条件是 jiraissue.ASSIGNEE 值。
我想出了以下内容:
SELECT TIMESTAMPDIFF(HOUR,a.assigned_date,b.resolved_date),a.*, b.*
FROM jiraissue
INNER JOIN (
SELECT changegroup.CREATED as "assigned_date",changegroup.issueid as jid
FROM changegroup
JOIN changeitem ON changegroup.ID = changeitem.groupid
WHERE changeitem.FIELD="assignee"
GROUP BY changegroup.issueid
ORDER BY changegroup.CREATED DESC
) as a ON a.jid = jiraissue.id
INNER JOIN (
SELECT changegroup.CREATED as "resolved_date", changegroup.issueid as jid
FROM changegroup
JOIN jiraissue on changegroup.issueid = jiraissue.ID
JOIN changeitem ON changegroup.ID = changeitem.groupid
WHERE changeitem.FIELD="status" AND changeitem.NEWVALUE=5
GROUP BY changegroup.issueid
ORDER BY changegroup.CREATED DESC
) as b ON b.jid = jiraissue.id
WHERE jiraissue.ASSIGNEE = "gangsta";
如果我使用特定的jiraissue.id
,则上述查询有效,但如果我通过jiraissue.ASSIGNEE
搜索,则上述查询无效(它会进行处理)。
我也对最新解决和分配的日期感兴趣,可能有很多,但我想要每个日期的最后一个。
非常感谢任何帮助。
谢谢。
最佳答案
想出了这个,似乎可以解决问题:
SELECT TIMESTAMPDIFF(HOUR,a.assigned_date,b.resolved_date),a.*, b.*,jiraissue.*
FROM jiraissue
INNER JOIN (
SELECT MAX(changegroup.CREATED) as "assigned_date",changegroup.issueid as jid
FROM changegroup
JOIN jiraissue as ji1 ON changegroup.issueid=ji1.id
JOIN changeitem ON changegroup.ID = changeitem.groupid
WHERE changeitem.FIELD="assignee" AND ji1.ASSIGNEE="gangsta" AND issuetype = 5 AND PRIORITY = 4
GROUP BY changegroup.issueid
) as a ON a.jid = jiraissue.id
INNER JOIN (
SELECT MAX(changegroup.CREATED) as "resolved_date", changegroup.issueid as jid
FROM changegroup
JOIN jiraissue as ji2 ON changegroup.issueid=ji2.id
JOIN changeitem ON changegroup.ID = changeitem.groupid
WHERE changeitem.FIELD="status" AND changeitem.NEWVALUE=5 AND ji2.ASSIGNEE="gangsta" AND issuetype = 5 AND PRIORITY = 4
GROUP BY changegroup.issueid
) as b ON b.jid = jiraissue.id
ORDER BY b.resolved_date DESC;
关于mysql - 使用不同的条件连接同一个表上的不同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32966889/