左联接只返回一条记录

时间:2020-07-05 11:49:11

标签: php mysql count left-join average

我想加入两个表。一个是“用户”,另一个是“评论”。 我要实现的是所有用户的评论表中的平均评分和总评分。 当审阅表具有所有用户的评分时,我得到期望的结果。 但是,当评论表为空时,我从用户表中仅获得一条记录。目前,用户表中有3个用户,但查询仅显示一条记录。

即使评论表中没有用户记录,我也希望获得所有用户。 这是我正在使用的查询

SELECT u.id, u.name, u.photo, COUNT(r.rating) AS totalratings,
                                ( SELECT ROUND (AVG(r.rating),0)
                                FROM reviews r
                                WHERE r.fk_receiver_id = u.id) AS avg_rating 
                                FROM
                                users u LEFT JOIN reviews r
                                ON r.fk_receiver_id = u.id 
                                WHERE u.role=2
                                GROUP BY r.fk_receiver_id

1 个答案:

答案 0 :(得分:1)

您按错误的列分组;当它为null时(这归因于左联接),分组将不会按照您希望的那样进行。您的查询内容如下:

case-sensitive

请参见DB Fiddle上的运行示例。

相关问题