让我略述一下情况: 我有2张桌子:producten和review, 在producten我有多个产品存储,并在评论我现在存储所有的评论,同时尝试获得评论表中的评级的平均值mysql只返回1行,而我期待2行,因为我有2个产品。
我试图使用的查询是:
SELECT p.*, CAST(AVG(r.rating) AS DECIMAL(2,1)) as waardering FROM `producten` as p INNER JOIN `reviews` as r ON p.id=r.product_id
我也尝试过:
SELECT p.*, CAST(AVG(r.rating) AS DECIMAL(2,1)) as waardering FROM `producten` as p INNER JOIN `reviews` as r ON r.product_id=p.id
但是这也没有返回超过1行。
有谁能告诉我为什么查询只返回1行而不是它在producten表中找到的所有行?
如果需要,请随时告诉我如何增加这个问题。
答案 0 :(得分:1)
这是因为你正在使用AVG。它将所有行组合在一起作为一行。您可能希望通过平均评分进行分组。
所以如果我有一个有两列的表..产品名称/评级...我会这样做:
select productname, avg(rating) from ratings group by productname
答案 1 :(得分:1)
您希望在查询结尾处GROUP BY p.id
,以便获得每个产品的平均值,而不是"第一个"中的值。产品的所有产品的平均值。