2010-05-13 4 views
0

당 이벤트를 계산하는 시간 스탬프 데이터 (타임 스탬프, 이벤트) 세트 : ID, 날짜, 이벤트를MySQL의는 내가 테이블이 일

나는 또한 테이블의 날짜가 : 일 (Ymd 일수 형식)

: 문제는 내가
SELECT DATE_FORMAT(table.timestamp, '%Y-%m-%d') ydm, count(table.fkUID) FROM `table` where table.fkUID=$var group by ydm; 

가입 또는 결과 쇼를 만들기 위해 조건문을 사용하는 몇 가지 방법이 0 (또는 null)을 보여주기 위해 싶습니다 어떤 일이 어떤 이벤트가없는 것입니다
date|count 
---------- 
2010-05-23| 5 
2010-05-24| 0 <--- this line just doesn't exist in my query. 
2010-05-26| 3 

답변

2
select d.date,count(e.timestamp) 
from dates d 
left join events e on d.date=DATE_FORMAT(e.timestamp,'%Y-%m-%d') 
group by d.date; 

나는 테스트 환경을 가지고 있지 않으며, 나는이 질문에 대한 명확한임을 잘 모르겠지만, 여기가 내 생각이다.

+0

왼쪽 조인은 날짜 테이블에서 누락 된 행이 없는지 확인합니다. 이벤트는 날짜별로 계산됩니다. – Notinlist

+0

나는 이것을 시도했지만, 그 날에 타임 스탬프가없는 이벤트가없는 곳에서는 0을 추가하지 않았다. 그것은 기존의 코드보다 훨씬 깔끔했습니다. –

+0

'd.date = DATE (e.timestamp)'를 사용할 수도 있습니다. –

0

당신이 관심있는 모든 날짜의 목록을 포함하는 테이블을 만든 다음 거기에있는보기로 외부 조인을 수행해야한다는 것이 받아 들여지는 지혜입니다. 나도 알아.