次のクエリがあります。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
することは、彼らはその週の格付けを持っていない場合でも、従業員を返すことです。
だから、最初の2行は
36, Employee1, 2.9091
36, Employee2, NULL
を返します。この上の任意の助けいただければ幸いです。
すべての週を含むソースに外部結合する必要があります。 –
これは、私はダミーのカレンダーテーブルを作成する必要があることを暗示していますか? – Jeff
それは最も効率的な方法でしょう。 DISTINCT WEEK(作成済み)からReviewを実行することもできますが、私はそれを提案しません。 –