2012-12-18 6 views
-2

나는, 왜 날짜 2012년 12월 21일 및 2012년 12월 24일이 존재하지 않는 시작내 mysql 쿼리를 변경해야합니까?

My db records

SELECT * FROM (
     SELECT t1.eventId,t1.start_date,t1.end_date, COUNT(*) pos FROM events t1 
     LEFT JOIN events t2 ON t1.start_date = t2.start_date AND t1.eventId <= t2.eventId 
     WHERE t1.start_date BETWEEN '2012-12-18' AND '2012-12-24' 
     GROUP BY 
     t1.eventId,t1.start_date 
     ORDER BY 
     t1.start_date,pos ASC 
    ) t 
    WHERE 
     pos <= 3; 

enter image description here

, 내 쿼리를 변경할 도움이 필요

start_date가 존재하지 않으면 NULL 또는 빈 값이 필요합니다.

감사합니다. advanc 전자

참고 : 21 및 24에 대한 어떤 기록 ... 난 내 쿼리

+0

에 빈 값을 필요로하지만 내 DB에 위치 null 또는> 3 ... –

+0

더는없는 문제가있을 수 있습니다 ... –

+0

테이블 구조의 스크린 샷을 표시 할 수 있습니까? ypi가'datetime' 또는'timestamp'를 사용하고 있으며 널 값을 허용한다고 가정합니다. – Mawg

답변

1
SELECT * FROM (
     SELECT t1.eventId,t1.start_date,t1.end_date, COUNT(*) pos FROM events t1 
     LEFT JOIN events t2 ON t1.start_date = t2.start_date AND t1.eventId <= t2.eventId 
     WHERE t1.start_date BETWEEN '2012-12-18' AND '2012-12-24' 

     OR t1.start_date IS NULL -- <<< I assume this is what you want... 

     GROUP BY 
     t1.eventId,t1.start_date 
     ORDER BY 
     t1.start_date,pos ASC 
    ) t 
    WHERE 
     pos <= 3;