MySQL查询未按预期工作

MySQL查询未按预期工作,mysql,Mysql,我在使用连接、计数和求和的MySQL查询时遇到问题。 环境可在以下位置获得: 我的目标是选择用户的所有数据,统计他有多少评论和帖子,并总结他收到的所有评分。尽管您可以从示例中看到,尽管有3条评级记录,但返回的最终评级数字是-4(应该是-3)。我假设它需要与group by一起工作?这里是我使用派生表(如x和y)的答案: x表获取帖子数量和总评分,y表获取评论数量和总评分。两个表都通过用户名(或者用户id,如果您愿意)连接起来,并且每个表中的两个评级都添加在一起 要获取所有用户数据,必须在x和y表

我在使用连接、计数和求和的MySQL查询时遇到问题。 环境可在以下位置获得:


我的目标是选择用户的所有数据,统计他有多少评论和帖子,并总结他收到的所有评分。尽管您可以从示例中看到,尽管有3条评级记录,但返回的最终评级数字是-4(应该是-3)。我假设它需要与group by一起工作?

这里是我使用派生表(如x和y)的答案:

x
表获取帖子数量和总评分,
y
表获取评论数量和总评分。两个表都通过用户名(或者用户id,如果您愿意)连接起来,并且每个表中的两个评级都添加在一起

要获取所有用户数据,必须在
x
y
表中明确列出用户表中的列:
选择u.id、u.active、u.ip、u.registered、u.username、u.email、u.role等。。。单击此处的COL,然后在最外面的select(第一行)中执行相同操作:
选择x.id、x.active、x.ip、x.registered、x.username、x.email、x.role等。。。此处为COLS

要获取特定用户,请在表x、表y和最外层的select上添加
WHERE
子句

select x.id, x.active, x.ip, x.registered, x.username, x.email, x.role, 
   x.posts, y.comments, x.rating + y.rating as rating 
from
   (select u.id, u.active, u.ip, u.registered, u.username, u.email, u.role, 
    count(p.user_id) as posts, ifnull(sum(pr.rating),0) as rating 
    from users u 
    join posts p on p.user_id=u.id
    left join posts_ratings pr on pr.post_id=p.id) as x
join
   (select u.id, u.active, u.ip, u.registered, u.username, u.email, u.role, 
    count(c.user_id) as comments, ifnull(sum(cr.rating),0) as rating 
    from users u 
    join comments c on c.user_id=u.id
    left join comments_ratings cr on cr.comment_id=c.id) as y
on x.username=y.username;