날짜 테이블을 사용하여 주별로 여러 열을 계산하려고합니다. 하나의 열로 처리 할 수 있으며 정상적으로 작동합니다. 그러나 여러 열을 계산할 때 결과가 잘못되거나 중복됩니다. 나는 그것이 합류 때문이라고 생각한다. 예상대로데이터 테이블을 기반으로 여러 열 계산 - MySQL
이 하나 개의 컬럼에 대해 작동합니다
SELECT
DATE_FORMAT(thedate, '%u') as week
,COUNT(t.completed_date) as completed
FROM datetable
LEFT JOIN projects t ON t.completed_date = thedate
WHERE thedate BETWEEN YEAR(NOW()) AND NOW()
GROUP BY YEARWEEK(thedate,7)
선택에 ,COUNT(t.sales_date) as sales
을 추가함으로써, 나는 완료 및 판매에 대한 중복 카운트를 얻을 것이다.
(프로젝트)
| id | completed_date | sales_date |
| 1 | NULL | NULL |
| 2 | NULL | 2013-08-26 |
| 3 | NULL | 2013-08-28 |
| 4 | 2013-09-06 | NULL |
내가 영으로 모든 날짜가 필요하기 때문에 전혀있을 때 나는 datetable를 사용하지 않는거야
| week | completed | sales |
| 34 | 0 | 0 |
| 35 | 0 | 2 |
| 36 | 1 | 0 |
을 찾고 있어요 날짜. 하위 쿼리로 해결할 수 있다고 생각하지만이 쿼리에는 12 개의 다른 날짜 필드도 포함되어야합니다 (샘플 제외).
많은 서브 쿼리를 사용하는 것보다이 문제를 해결하는 더 좋은 방법이 있습니까? 내 SQL 조금 녹슬니다.
감사합니다,하지만 같은 진술; 12 개의 하위 쿼리를 추가 할 때 더 쉬운 방법이 있어야한다고 생각합니다. – stiq
새 쿼리가 추가 되었습니까? – Barmar
WHERE 절을 추가하더라도 훨씬 더 좋지만 속도가 느립니다. 1 초에 10 개의 행을 반환합니다. 루프를 사용하여 첫 번째 쿼리를 만들고이를 사용할 수도 있습니다. – stiq