2016-07-12 3 views
0

나는이 MySQL 데이터베이스에 다음 데이터베이스 스키마왼쪽 외부 데이터를 잘 표에 누락 된 SQL에 참여

사용자

  • ID
  • 이름

출석

  • ID
  • USER_ID
  • checked_on (날짜) 나는 그들이 그 날에 존재하는지 여부라는 사용자와 다른 열을 나열하는 보고서를 구축하고자 지정된 날짜 범위에 대해 지금

아닙니다.

나는 보고서를 얻을 수 있도록 어떻게 위의 쿼리를 수정하려면 다음 쿼리

select * from users left outer join attendance on users.id = attendance.user_id where users.id in (11, 12); 

를 사용하여 왼쪽 외부 조인을 사용하여 완수하려고했다?

+0

일부 샘플 데이터와 예상 결과를 추가합니다. – Blank

답변

2

다음과 같은 쿼리를 사용할 수 있습니다

select u.*, 
     IF(a.id IS NOT NULL, 'Present', 'Not Present') AS IsPresent 
from users u 
left outer join attendance a 
    on u.id = a.user_id and a.checked_on = ? 
where u.id in (11, 12); 
+0

이것은 조건에서 단일 날짜를 제공 할 때 작동합니다. 그러나 'a.checked_on> ='2016-07-01 '및 a.checked_on <='2016-07-15 '와 같은 조건에 날짜 범위를 포함 시키면 사용자가 체크인 한 행만 인쇄됩니다. 날짜 범위에도 적용 할 수있는 방법이 있습니까? – Sudar

+0

@Sudar 예, 'ON' 절에 술어'a.checked_on> ='2016-07-01 '과 a.checked_on <='2016-07-15 '을 포함 시키십시오. 어디 있니? –

관련 문제