2014-12-22 4 views
0

내 시스템에서 다음 감사 테이블이 : 동일한 ID를 가진Recursiv 테이블은 여러 조건에 따라 조인

+---+----------------+-------------+----------------+-----------------------+-----------+ 
|ID |field   |checkpoint |value1   |value2     |created_by | 
+---+----------------+-------------+----------------+-----------------------+-----------+ 
|1 |active   |0   |null   |1      |user1  | 
|2 |person   |0   |null   |jonh     |user1  | 
|4 |duration  |2   |01.01.1970 0:00 |01.01.1970 0:07  |user1  | 
|2 |field_update |1   |0    |1      |user2  | 
|1 |opened_by  |1   |null   |sam     |user1  | 
|2 |work_note  |2   |null   |TEST     |user2  | 
+---+----------------+-------------+----------------+-----------------------+-----------+ 

값 하나의 엔티티 참조됩니다. 이 감사 테이블은 하나의 엔티티 내의 모든 변경 사항을 추적합니다. 그래서 다음 엔티티를 잡아야합니다 : field = 'person'AND value2 = 'john'일 때이 엔티티 (ID)의 다음 업데이트를 받아야합니다. 테이블을 보면 라인 4 (같은 ID와 체크 포인트 = 체크 포인트 + 1)입니다. 따라서이 ID와 created_by 필드를 사용하여 언급 된 조건으로 모든 ID를 계산해야합니다.

답변

0

어때요?

SELECT  * 
FROM  mytable a 
INNER JOIN mytable b ON a.ID = b.ID 
WHERE  a.field = 'person' 
AND   a.value2 = 'john' 
AND   b.checkpoint = a.checkpoint + 1 
+0

감사합니다. 정확히. NEXT가 "field = 'person'AND value2 = 'john'"다음에 업데이트 할 때 사례를 잡아야합니다. 다음 갱신은 표 a의 행의 체크 포인트가 표 b의 행과 비교하여 -1 인 행입니다. – zotchy07

0

원하십니까?

Select count(id) from audit where id = (select id from audit 
group by id 
having count(distinct checkpoint)=max(checkpoint) and min(checkpoint)=1 
where field = 'person' AND value2 = 'john') 
관련 문제