2011-07-27 8 views
4

지난 30 일 동안 데이터베이스에서 하루에 빌드 수를 얻기 위해 쿼리를 수행하고 있습니다. 그러나 빌드가없는 곳에서도 날짜를 표시해야합니다.MySql Query help

WHERE 절에서 submittime을 사용하여 빌드가 있는지 확인합니다. 어떻게 COUNT (ID) == 0이지만 지난 30 일 동안 만 포함하도록 수정할 수 있습니까?

원래 쿼리 :

SELECT COUNT(id) AS 'Past-Month-Builds', 
      CONCAT(MONTH(submittime), '-', DAY(submittime)) as 'Month-Day' 
    FROM builds 
    WHERE DATE(submittime) >= DATE_SUB(CURDATE(), INTERVAL 30 day) 
GROUP BY MONTH(submittime), DAY(submittime); 

나는 시도했다 :

SELECT COUNT(id) AS 'Past-Month-Builds', 
      CONCAT(MONTH(submittime), '-', DAY(submittime)) as 'Month-Day' 
    FROM builds 
    WHERE DATE(submittime) >= DATE_SUB(CURDATE(), INTERVAL 30 day) 
     OR COUNT(id) = 0 
GROUP BY MONTH(submittime), DAY(submittime); 
+2

는 소리 . –

답변

1

당신은 날짜의 테이블이 필요, 다음 테이블을 빌드에 가입 떠났다. 이 같은

뭔가 : - 예제 질문에 태그 다른`날짜-generation` 살펴보고 문제가 당신이`builds` 테이블에 날짜를하지 않아도처럼

SELECT 
    COUNT(id) AS 'Past-Month-Builds', 
    CONCAT(MONTH(DateTable.Date), '-', DAY(DateTable.Date)) as 'Month-Day' 
FROM DateTable 
    LEFT JOIN builds ON DATE(builds.submittime) = DateTable.Date 
WHERE DateTable.Date >= DATE_SUB(CURDATE(), INTERVAL 30 day) 
GROUP BY MONTH(submittime), DAY(submittime); 
+0

감사합니다. –