我已经更改了问题行以使用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 ...' –