2011-07-27 130 views
0

這可能很容易,但我遇到了問題。我之前問過一個關於查詢的問題(MySql Query help),答案是創建另一個表並將其與我當前的查詢結合起來。所以我創建了一個臨時表並將其與我的查詢結合起來,但得到的結果相同。mysql加入問題

概述: 我有日期的最後30天,0爲每個條目

+------+------------+ 
| 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 

值的日期表,我想加入這個表的查詢我做的另一個表這得到以下結果:

+-------------------+-----------+ 
| 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是主表,並使用left outer joinbuilds表。

另外,將與WHERE子句中的構建表相關的任何條件移至ON子句,因爲這是可選表。

+0

哇,謝謝。我提交後,我再次查詢了這個查詢,就像..爲什麼我要做一個正確的加入...謝謝 –