다음 쿼리가 있습니다. 내가 필요로하는 것은 그들이 그 주에 대한 등급이없는 경우에도 직원을 반환하는 것입니다JOIN이 모든 행을 표시하지 않습니다.
36, Employee1, 2.9091
37, Employee2, 3.5000
37, Employee1, 3.7143
38, Employee2, 4.2000
38, Employee1, 4.0000
39, Employee2, 2.0000
40, Employee2, 2.8333
40, Employee1, 3.8571
41, Employee1, 2.6667
43, Employee2, 2.5000
43, Employee1, 1.5714
44, Employee2, 3.8333
44, Employee1, 4.4000
45, Employee2, 3.2500
45, Employee1, 4.8571
46, Employee2, 2.1667
46, Employee1, 2.2000
48, Employee2, 2.6667
49, Employee2, 1.4000
49, Employee1, 3.5000
50, Employee2, 2.0000
50, Employee1, 1.5000
51, Employee2, 2.7143
51, Employee1, 2.7500
: 같은
SELECT WEEK(Review.created) AS Week,
CONCAT(Employee.firstname, ' ', Employee.lastname) AS Name,
AVG(Rating.scale) AS Average
FROM employees Employee
LEFT JOIN reviews Review
ON Employee.id = Review.reviewee_id
LEFT JOIN ratings AS Rating
ON Rating.id = Review.rating_id
WHERE Employee.id IN (71, 72)
GROUP BY WEEK(Review.created),
Employee.id
ORDER BY WEEK(Review.created),
Employee.id
결과를 보인다.
그래서 처음 두 행이에36, Employee1, 2.9091
36, Employee2, NULL
어떤 도움도 대단히 감사하겠습니다 반환합니다.
모든 주를 포함하는 소스에 외부 조인이 필요합니다. –
이렇게하면 더미 캘린더 테이블을 만들어야 할 필요가 있습니까? – Jeff
가장 효율적인 방법이 될 것입니다. 당신은'DISTINCT WEEK (created) FROM Review'을 할 수도 있지만 제안하지는 않을 것입니다. –