我已經更改了問題行以使用IN
構造而不是=
,因爲我認爲這是您想要的?
但是,你實際上並沒有比較開始或結束時間。你是確保自定義字段標識符(10100和10101)的比賽,但不包含自定義字段的值匹配...
...
WHERE (
icv.ISSUEID <> icv2.ISSUEID
AND icv2.CUSTOMFIELDID = 10100
AND icv.CUSTOMFIELDID = 10100
)
AND (
icv2.ISSUEID <> icv3.ISSUEID
AND icv2.CUSTOMFIELDID = 10100
AND icv3.CUSTOMFIELDID = 10101
)
AND icv.ISSUEID = icv3.ISSUEID
AND icv2.ISSUEID IN (
SELECT ID FROM ISSUES WHERE jql='project=Prakse'
)
AND i.jql='project=Prakse'
...
編輯我想我明白這個問題會好一點吧。下面將爲你對其存在的另一個問題具有重疊時間的所有問題(開始 - 結束):
SELECT
*
FROM
ISSUES i
INNER JOIN ISSUECUSTOMFIELDVALUES icv
ON i.ID = icv.ISSUEID
AND icv.CUSTOMFIELDID = 10100
INNER JOIN ISSUECUSTOMFIELDVALUES icv2
ON i.ID = icv2.ISSUEID
AND icv2.CUSTOMFIELDID = 10101
WHERE
i.JQL= 'project=project1'
AND EXISTS (
SELECT ID FROM ISSUECUSTOMFIELDVALUES icv3
WHERE
icv3.ISSUEID <> i.ID
AND icv3.CUSTOMFIELDID IN (10100, 10101)
AND icv3.VALUE >= icv.VALUE
AND icv3.VALUE <= icv2.VALUE
)
EDIT 2如果JIRA
API確實需要表鍵更具體的參考,那麼也許下面的工作(我沒有訪問JIRA這裏 - 只是看什麼是合乎邏輯的):
SELECT
*
FROM
ISSUES i
INNER JOIN ISSUECUSTOMFIELDVALUES icv
ON i.ID = icv.ISSUEID
AND icv.CUSTOMFIELDID = 10100
AND i.JQL = 'project=project1'
INNER JOIN ISSUECUSTOMFIELDVALUES icv2
ON i.ID = icv2.ISSUEID
AND icv2.CUSTOMFIELDID = 10101
AND i.JQL = 'project=project1'
WHERE
i.JQL= 'project=project1'
AND EXISTS (
SELECT ID FROM ISSUECUSTOMFIELDVALUES icv3
WHERE
icv3.ISSUEID <> i.ID
AND icv3.CUSTOMFIELDID IN (10100, 10101)
AND icv3.VALUE >= icv.VALUE
AND icv3.VALUE <= icv2.VALUE
)
編輯3我不知道這是否會解決問題,但我已經刪除了子選擇(存在)聲明有利於內部聯接。
SELECT
i.ID, i.JQL, icv.VALUE AS StartTime, icv2.VALUE AS FinishTime
FROM
ISSUES i
LEFT JOIN ISSUECUSTOMFIELDVALUES icv
ON i.ID = icv.ISSUEID
AND icv.CUSTOMFIELDID = 10100
LEFT JOIN ISSUECUSTOMFIELDVALUES icv2
ON i.ID = icv2.ISSUEID
AND icv2.CUSTOMFIELDID = 10101
INNER JOIN ISSUECUSTOMFIELDVALUES icv3
ON i.ID <> icv3.ISSUEID
AND (icv3.CUSTOMFIELDID = 10100 OR icv3.CUSTOMFIELDID = 10101)
AND icv3.VALUE >= icv.VALUE
AND icv3.VALUE <= icv2.VALUE
WHERE
i.JQL= 'project=project1'
值匹配在INNER JOIN語句中完成。將'='更改爲'in'時,JIRA API會引發錯誤。必須有嚴格的價值。 –
正確...所以,你想要自定義字段(開始時間:10100和結束時間:10101)重疊的問題?例如:問題1(開始13:00,結束時間15:00),問題2(開始時間12:00,結束時間14:00)? –
在我的第二次嘗試中,如果JIRA仍然抱怨使用'IN'構造,那麼將該腳本部分更改爲:'(icv3.CUSTOMFIELDID = 10100或icv3.CUSTOMFIELDID = 10101)AND ...' –