2017-01-11 2 views
2

직원 데이터베이스와 출석 데이터베이스가 있습니다. 출석 날짜 보고서를 작성해야합니다. 레코드가 없어도 날짜 범위의 모든 레코드를 선택하십시오.

출석 데이터베이스 테이블 내가 쿼리 아래

SELECT a.* FROM attendance a WHERE a.user_id=10 AND (a.date BETWEEN '2017-01-06' AND '2017-01-10') 

결과 사용하고

Database Schema

: - Result by My Query

내가 모든 주어진 기간 동안의 기록하지만 일부 날짜 기록을 원하는을 데이터베이스에 존재하지 않는 및 그 날짜가 null 값을 보여줍니다. 그 날짜에 아래 그림과 같이

Final Output I want

+0

은 내가 잘못 뭔가 다른 쿼리가 잘못되지 않기 때문에, 그냥 두 경우 모두 올바른 날짜와 USER_ID를, 필터가있다 생각합니다. 'a.' 파일을 지우고 정상적인 질의를 할 수 있습니까? (SELECT * 출석부터 어디서 user_id = 10 AND (날짜 사이 '2017-01-06'AND '2017-01-10') – Tosfera

+0

일반적으로 응용 프로그램 코드 – Strawberry

+0

에서 데이터 표시 (예 : 누락 된 행) 문제를 처리합니다. @Tosfera 데이터베이스에서 우리는 해당 날짜 (07,08)에 대한 레코드가 없지만 위 이미지에 표시된 간격의 누락을 포함하여 응답을 원합니다. –

답변

0

이보십시오. 실행할 수 없지만이 아이디어를 기반으로 날짜 범위를 생성하는 것이이 answer입니다.

  1. 파생 테이블 d으로이 기간을 사용하십시오. 데이터를 일치하지 않는 일치하는 데이터에 대한 모든 열을 얻을 null 있도록

  2. 수행합니다 dleft joinattendance 당신의 상태를 추가.

  3. 직원 ID를 제외한 나머지 데이터를 제공합니다. 선택한 쿼리에서 하드 코드 할 수 있습니다.

    select * from 
        (select a.Date 
         from 
         (
          select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date 
          from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a 
          cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b 
          cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c 
         ) a 
         where a.Date between '2017-01-06' AND '2017-01-10' 
        ) d 
    left join 
        attendance a 
    on d.date = a.date 
    where 
    a.user_id=10 
    
+0

데이터베이스에서 실행되었지만 작동하지 않습니다 ... 저는 이미 그것에 대해 봤습니다. 해결책을 찾았지만 아무도 나를 위해 일하지 않았습니다 .. –

+0

왜 이것이 작동하지 않습니까? 어떤 오류가 발생합니까? sqlfiddle.com을 사용하고 쿼리 실행을 시도 할 수 있도록 샘플 테이블을 만드는 것이 더 쉬울 것입니다. – Utsav

+0

sqlfiddle에서 내 스키마를 만들었습니다 -> http://sqlfiddle.com/#!9/3f3278 –

관련 문제