1
我遇到評分系統問題。帶有LEFT JOIN的SQLite AVG()不返回所有行
當在LEFT JOIN
中沒有匹配時,它在使用AVG()
時根本沒有返回行。
如果沒有加入結果,則返回NULL。
SELECT op_id,
...,
rating_stars
但是這會刪除該行。
SELECT op_id,
...,
AVG(rating_stars)
這是我最後一次嘗試:
SELECT op_id,
op_img,
op_title,
op_worktime,
op_cookingtime,
CASE rating_stars WHEN null THEN 0 ELSE AVG(rating_stars) END
FROM
opskrifter
LEFT JOIN
rating
ON
rating.fk_op_id = opskrifter.op_id
WHERE
fk_type_id=1
ORDER BY
op_id DESC
我需要所有的結果,如果它未被評爲但它應該只是返回0這樣的:
ID | RATING
--- 1 --- | --- 0 ---
--- 2 --- | --- 4 ---
--- 3 --- | --- 0 ---
但上面SQL返回:
ID | RATING
--- 2 --- | --- 4 ---
我很確定我在MySQL中完成了這個任務,沒有任何問題。
*您可以用您的問題一起發佈樣本記錄* – 2013-03-09 11:28:59
我創造了這個SQLfiddle:http://sqlfiddle.com/#!5/0bc78/1 – Lasse 2013-03-09 11:43:28
這個查詢的輸出是否正確?看到這裏http://www.sqlfiddle.com/#!7/0fda4/1 – 2013-03-09 11:45:27