0
我试着问了一些问题,并用Google搜索,结果我发现一个查询可以在各种可能的意义上杀死数据库。用不同的标准在同一张桌子上加入不同的行
我有3个表:
jiraissue
保留有关JIRA门票的信息(其谁分配)。
changegroup
这将保持更改日期,票证的ID被更改并且ID将更改为更改详细信息。
changeitem
包含更改ID,更改字段和新/旧值。
我想以下输出:
[time_taken_to_resolve],[assigned_date],[resolve_date],[jira_ticket_details_from_jiraissue]
Criteria是jiraissue.ASSIGNEE值。
我想出了以下内容:如果我使用一个特定jiraissue.id
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.ASSIGNEE
搜索(它进行运算)。
另外我对最近解决和分配的日期感兴趣,可能有很多,但我想每个的最后一个。
任何帮助,非常感谢。
谢谢。
你应该分析你的索引。我认为你有一个由jiraissue.id,但没有由jiraissue.ASSIGNEE。对于上次解析和分配的日期,您可以在连接中使用max()。 –