web-dev-qa-db-ja.com

LEFTJOINを使用したネストされたSELECTステートメント

このSQLステートメントの何が問題になっているのか、なぜそれが結果を生成しないのか、私は一生理解できません。 LEFT JOINを取り出すと動作しますが、何が問題なのですか?

SELECT  b.id, r.avg_rating
FROM    items AS b
LEFT JOIN
(
    SELECT avg(rating) as avg_rating
    FROM ratings 
    GROUP BY item_id
) AS r 
  ON b.id = r.item_id
WHERE b.creator = " . $user_id . " 
AND b.active = 1
AND b.deleted = 0
ORDER BY b.order ASC, b.added DESC

助けていただければ幸いです。

9
Wasim

サブクエリにitem_id列を追加して(動作することを保証します)、ON句がr.item_idを見つけられるようにします。

SELECT item_id, avg(rating) as avg_rating
FROM ratings 
GROUP BY item_id
20
John Woo