簡體   English   中英

使用不同的critera連接同一張表上的不同行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM