SUM()在MySQL中不起作用:SUM()与DISTINCT

RaG*_*aGu 5 php mysql

我有4个表,称为商店,用户,评论和评级.

我想获得相应商店的所有评论,包括评论的用户详细信息以及该商店的整体评分.

我几乎完成了单个查询.但问题是,如果商店对同一用户进行多次相同评级,则将其视为单一评级.但该评级数是正确的.

在此输入图像描述

从该表中,user_id 3被评为shop_id 1为4次.因此计数为4,total_rating为17.

我的疑问是

select review.comments, users.username, count(distinct rating.id) as rating_count,
sum(distinct rating.rating) as total_rating from users 
left join review on users.id = review.user_id and review.shop_id='1' 
left join rating on users.id = rating.user_id and rating.shop_id='1' 
where review.shop_id='1' or rating.shop_id='1' 
group by users.id, review.user_id, rating.user_id, review.id
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,我得到了

在此输入图像描述

但我需要total_rating 17 for user_id 3 ..

检查这个小提琴

Sub*_*lil 3

DISTINCT就是sum( rating.rating) as total_rating,结果(12=17-5)的原因,因为在计算总和时它只会包含 5 一次。

 select review.comments, review.user_id, count(distinct rating.id) as rating_count,
    sum( rating.rating) as total_rating from users 
    left join review on users.id = review.user_id and review.shop_id='1' 
    left join rating on users.id = rating.user_id and rating.shop_id='1' 
    where review.shop_id='1' or rating.shop_id='1' 
    group by users.id, review.user_id, rating.user_id, review.id
Run Code Online (Sandbox Code Playgroud)

这是SQLFiddle

示例输出: 在此输入图像描述 希望这可以帮助