SQL语句没有正确分组

时间:2016-08-17 04:40:12

标签: php sql

我正在做一个食品评论的网页,有一个名为前10名的页面,根据食品评论,它将显示前10名。我目前有这个SQL,但它结合了所有的菜肴评级,并结合为一个菜。此SQL语句放在PHP代码中。

SELECT i.path, i.name, AVG(r.review_rating), r.image_id
  FROM images i, review r
 WHERE r.image_id = i.id
 GROUP BY 'r.image_id'
 ORDER BY AVG(r.review_rating) DESC
 LIMIT 10

2 个答案:

答案 0 :(得分:1)

如果没有看到您的sql架构,很难确切地知道您需要将其更改为什么。但看起来您可能希望使用JOIN而不是从多个表中进行选择。试试这个:

SELECT i.path,
    i.name,
    AVG(r.review_rating),
    r.image_id 
FROM images i
JOIN review r ON  r.image_id = i.id 
GROUP BY r.image_id 
ORDER BY AVG(r.review_rating) DESC 
LIMIT 10

您还需要检查实际上有10个不同的图像(10个或更多独特的r.image_id。您可以通过删除GROUP BY并查看结果来检查这一点。)

如果不起作用,请发布您的架构。

答案 1 :(得分:1)

问题出在GROUP BY 'r.image_id''r.image_id'是一个字符串,这使GROUP BYWHERE子句筛选的所有行中创建一个组。

您可能想要GROUP BY r.image_id

详细了解何时在MySQL中使用apostrophes, quotes and backticks