2012-03-07 7 views
0

this SQLFiddle에서 실제로 작업하고있는 쿼리를 찾을 수 있습니다. 필자는 전화기에서 로그인 및 로그 아웃하는 사용자의 이벤트를 보관하는 데이터베이스 테이블을 보유하고 있습니다.특정 조건에서 마지막 이벤트 선택

기본적으로 에이전트가 실제로 "기록"되어 있지만 로깅 이벤트 중에는 상담 중이거나 관리 시간에있는 것과 같은 다른 상태 일 수있는 쿼리가 있습니다.

내가 달성하고자하는 것은 기록 된 에이전트에 대한 마지막 상태를 얻는 것입니다.

기록되지 않은 상태에서 기록 된 상태와 관련된 다른 상태가 불가능합니다.

답변

1

이 트릭을 수행해야합니다

SELECT a.* 
FROM eventos_centralita a 
LEFT JOIN eventos_centralita b 
    ON b.codAgente = a.codAgente 
    AND b.evento = 'Deslogado' 
    AND b.fechaHora > a.fechaHora 
LEFT JOIN eventos_centralita c 
    ON c.codAgente = a.codAgente 
    AND c.fechaHora > a.fechaHora 
WHERE b.idEvent IS NULL AND c.idEvent IS NULL AND a.evento <> 'Deslogado' GROUP BY a.codAgente; 
+0

감사 찰스를하지만 그렇지 않은, 그것은 행 6 날 다시 제공하고 3 마지막 상태이기 때문에 6, 7해야한다 'Administrativo'대신 Logado '의 ' –

+0

최근 이벤트 만 반환하도록 쿼리를 편집했습니다. 나는 어딘가에서 낭비되고있는듯한 느낌이 들지만, 나는 어디에서 깨닫기에는 깨어 있지 않다. – RumpRanger

+0

찰스 대단히 감사합니다! 작동 중 : D –

관련 문제