[英]Joining different rows on the same table with different critera
我尝试四处询问并进行谷歌搜索,最后得到了一个查询,该查询在所有可能的意义上都杀死了数据库。
我有3张桌子:
jiraissue
保留有关jira票证(已分配给谁)的信息。
changegroup
保留更改日期,票证的ID以及更改详细信息的ID。
changeitem
包含更改ID,更改字段和新/旧值。
我想要以下输出:
[time_taken_to_resolve],[assigned_date],[resolve_date],[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
搜索(则进行运算),则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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.