2011-07-27 9 views
4

私は過去30日間の私たちのデータベースから1日あたりのビルド数を取得するためにクエリを実行しています。しかし、それはビルドも存在しなかった日々を記録する必要がありました。MySqlクエリのヘルプ

私の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) 
     OR COUNT(id) = 0 
GROUP BY MONTH(submittime), DAY(submittime); 
+2

の音 - 他の'日時-generation'を見ては、例のための質問をタグ付け。 –

答えて

1

をあなたは、日付のテーブルを必要とし、その後、テーブルを作成する参加左:私が試した何

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); 

このような何か:問題はあなたが `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

ありがとう、これは素晴らしい! –