2012-10-19 181 views
7

我不能为了我的生活找出这条SQL语句有什么问题,以及为什么它没有产生任何结果。如果我将LEFT JOIN取出是有效的,那么它有什么问题?用LEFT JOIN嵌套的SELECT语句

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 

希望大大的帮助。

回答

19

添加item_id列在你的子查询(我保证它会工作),所以ON子句可以找到当然r.item_id

SELECT item_id, avg(rating) as avg_rating 
FROM ratings 
GROUP BY item_id 
+6

是啊,谢谢你的SQL大师约翰!我会在12分钟内接受你的回答! – Wasim