2011-07-27 5 views
0

이것은 아마도 쉽지만 실제로 문제가 있습니다. 이전 질문 (MySql Query help)에 대한 질의를 물었습니다. 그 대답은 다른 테이블을 만들어 현재 쿼리와 결합하는 것이 었습니다. 그래서 임시 테이블을 만들고 내 쿼리와 결합하지만 동일한 결과를 얻고 있습니다.mysql join 질문

개요 : 나는 지난 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

와우, 고마워. 바로이 쿼리를 제출 한 직후 쿼리를 다시 살펴 보았습니다. 왜 내가 오른쪽 가입을하고 있습니까 ... 감사합니다. –