2011-07-27 42 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

哇,谢谢。我提交后,我再次查询了这个查询,就像..为什么我要做一个正确的加入...谢谢 –