我有一个特殊的问题。给定三个表。
产品 - ID - 标题 product_rating - product_id - 评分 产品视图 - product_id
我想用它们的评级(可以是 +1 或 -1 值)和它们的总产品数来获取产品。
SELECT
p.`id`, p.`title`,
SUM( pr.`rating` ) AS rating,
COUNT( pv.`product_id` ) AS views
FROM
`product` AS p
LEFT JOIN `product_rating` AS pr ON ( pr.`product_id` = p.`id` )
LEFT JOIN `product_view` AS pv ON ( pv.`product_id` = p.`id` )
GROUP BY
p.`id`
ORDER BY rating DESC
在表中,我有 1 个评分,9 个视图。但是,该查询返回 9 个评分和 9 个视图。我理解它为什么会发生(它是对每个 product_view 的评分求和),但我不知道如何解决它。
任何建议将不胜感激。
样本数据:
产品 ------------ 编号 | 标题 1 | 格洛伯 product_rating ------------------ 产品编号 | 评分 1 | 1 产品视图 ------------ product_id 1 1 1 1 1 1 1 1 1