我有以下查詢。JOIN不顯示所有行
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
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
我需要的是返回的員工,即使他們沒有爲這一週的評級。
所以前兩行會返回
36, Employee1, 2.9091
36, Employee2, NULL
任何幫助,在此將不勝感激。
您需要外連接到包含所有星期的源。 – 2011-12-27 17:34:01
那麼這意味着我需要創建一個虛擬日曆表? – Jeff 2011-12-27 18:39:12
這將是最有效的方法。你也可以做'DISTINCT WEEK(創建)FROM Review',但我不會建議。 – 2011-12-27 19:03:37