2011-08-12 3 views
0

두 개의 다른 값을 연속적으로 포함하는 필드를 포함하는 SQL 문을 작성해야하지만 필자가 작성한 방식에서는 동일한 값을 갖는 것으로 해석되므로 항상 null을 리턴합니다. 시각!SQL 문 작성시 문제점

내 조건은 다음과 같아야합니다 (ci.field = '그룹'과 ci.oldString = '우선 순위 구분')와 그의 수단이 계산

(ci.field = '양수인'와 ci.newString가 NULL) 시간 간격 : 문제가 그룹 트리 아지 그룹에 할당 된시기와 문제가 할당 된 시간

어떻게 해결할 수 있습니까?

내 SQL 문 :이 테이블은 느릅 나무에서입니다

select TIMEDIFF(a.created,b.created) 
from 
(select g.created, g.issueid as groupid1 
    from changegroup g 
    join changeitem ci on (ci.groupid = g.id) 
    join jiraissue ji on (ji.id = g.issueid) 
    join project p on (p.id = ji.project) 
    join priority pr on (pr.id = ji.priority) 
    where ci.field = 'Group' 
    and ci.oldString = 'Triage' 
    and ci.field='assignee' 
    and ci.newString is not NULL 
    and p.pname = 'Test' 
    and pr.pname='P1' 
    and ji.created between '2011-08-11 14:01:00' and '2011-08-12 14:11:00' 
) a 
left join (
    select ji.created, ji.id as groupid2 
    from jiraissue ji 
    join changegroup g on (g.issueid = ji.id) 
    join project p on (p.id = ji.project) 
    where p.pname = 'Test' 
     and ji.created between '2011-08-11 14:01:00' and '2011-08-12 14:11:00' 
) b ON (a.groupid1 = b.groupid2); 

내가 검색해야 데이터

enter image description here

+0

당신은 당신의 조건을 잘못 입력했거나 그것에 대해 아주 잘못된 것이 있습니다, 그것은 불가능합니다'ci.field = 'Group'과 ci.field = 'assignee''가 사실이어야합니다. – nobody

+0

나는 잘못 입력하지 않았습니다 :(필드를 'group'과 newstring = "groupx"로하고 두 번째로 field = 'assignee'와 newstring <> NULL 일 때 시간을 계산해야합니다. picutre 아마도 당신이 내가 원하는 것을 이해할 수있다. – rym

+0

당신이 제공 한 SQL이 샘플 데이터보다 더 _ _ _ _ 포함되어 있기 때문에 오히려 가난한 예제가있다. 키가 무엇인지 알기가 꽤 어렵다. 'group'과 oldstring = 'Triage'를 가진 1 레코드) 그리고 관련성이 있습니다. 그 외에 두 레코드 사이의 시간차를 계산하는 쿼리의 주요 목표를 잊어 버리는 것을 잊었습니다. – Eddy

답변

0

질문의 품질 만 해결하는 방법에 대한 힌트에 대한 내 의견을 참조하십시오 이것은 (당신이 1-n 조인을 생성하지 않는다고 확신 할 수 있다고 가정 할 때) 같아진다.