2011-07-27 15 views
0

これはおそらく簡単ですが、問題があります。以前の質問(MySql Query help)にはクエリに関する質問がありました。答えは別のテーブルを作成し、それを現在のクエリと結合することでした。だから私は一時的なテーブルを作成し、それを私のクエリに参加させていますが、同じ結果を得ています。mysql join question

概要: 私は過去30日間の日付とすべてのエントリ

+------+------------+ 
| Zero | Date  | 
+------+------------+ 
| 0 | 2011-07-27 | 
| 0 | 2011-07-26 | 
| 0 | 2011-07-25 | 
| 0 | 2011-07-24 | 
| 0 | 2011-07-23 | 
| 0 | 2011-07-22 | 
...etc 

のための0の値を持つ日付のテーブルを持っていると私は別のテーブルを行うクエリを使用して、このテーブルに参加しようとしていますそれはこれらの結果を取得:行方不明の日があること

+-------------------+-----------+ 
| Past-Month-Builds | Month-Day | 
+-------------------+-----------+ 
|    53 | 6-27  | 
|    103 | 6-28  | 
|    91 | 6-29  | 
|    70 | 6-30  | 
|    76 | 7-1  | 
|     8 | 7-2  | 
|    77 | 7-5  | 
|    111 | 7-6  | 
|    67 | 7-7  | 
|    70 | 7-8  | 
|     2 | 7-9  | 
|     3 | 7-10  | 
|    87 | 7-11  | 
|    53 | 7-12  | 
|    49 | 7-13  | 
|    84 | 7-14  | 
|    126 | 7-15  | 
|     3 | 7-16  | 
|     8 | 7-17  | 
|    98 | 7-18  | 
|    114 | 7-19  | 
|    841 | 7-20  | 
|    206 | 7-21  | 
|    738 | 7-22  | 
|     2 | 7-23  | 
|    65 | 7-25  | 
|    39 | 7-26  | 
|    21 | 7-27  | 
+-------------------+-----------+ 

お知らせを、私はその日の上に構築さがなかったとき0を表示するコルを過去-月には、ビルドしたいと思います。ここで

は、私が使用しようとしていますクエリです:ちょっと失わ

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

、任意のヘルプは素晴らしい おかげだろう。

答えて

1

datesがプライマリテーブルであるように変更し、buildsテーブルにleft outer joinを使用します。

また、WHERE句からON句へのビルドテーブルに関連する条件は、オプションのテーブルであるため、移動します。

+0

うわー、ありがとう。私がこれを提出した直後に、私は再び質問を見て、似ていました。なぜ私は右の参加をしています...ありがとう –