内部联接仅返回1行

时间:2015-05-08 23:02:31

标签: mysql sql join

让我略述一下情况: 我有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表中找到的所有行?

如果需要,请随时告诉我如何增加这个问题。

2 个答案:

答案 0 :(得分:1)

这是因为你正在使用AVG。它将所有行组合在一起作为一行。您可能希望通过平均评分进行分组。

所以如果我有一个有两列的表..产品名称/评级...我会这样做:

select productname, avg(rating) from ratings group by productname

答案 1 :(得分:1)

您希望在查询结尾处GROUP BY p.id,以便获得每个产品的平均值,而不是"第一个"中的值。产品的所有产品的平均值。