評価システムに問題があります。
に一致するものがない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でこれを行ったと確信しています。