Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 左连接只返回一条记录_Php_Mysql_Count_Left Join_Average - Fatal编程技术网

Php 左连接只返回一条记录

Php 左连接只返回一条记录,php,mysql,count,left-join,average,Php,Mysql,Count,Left Join,Average,我想把两张桌子连接起来。一个是“用户”,另一个是“评论”。 我想达到的是所有用户的平均和总评分从评论表。 当评审表对所有用户进行评分时,我得到了期望的结果。 但当reviews表为空时,我从users表中只得到一条记录。目前,users表中有3个用户,但查询仅显示一条记录 我想获取所有用户,即使在reviews表中没有用户记录。 这是我正在使用的查询 SELECT u.id, u.name, u.photo, COUNT(r.rating) AS totalratings,

我想把两张桌子连接起来。一个是“用户”,另一个是“评论”。 我想达到的是所有用户的平均和总评分从评论表。 当评审表对所有用户进行评分时,我得到了期望的结果。 但当reviews表为空时,我从users表中只得到一条记录。目前,users表中有3个用户,但查询仅显示一条记录

我想获取所有用户,即使在reviews表中没有用户记录。 这是我正在使用的查询

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

您按错误的列进行分组;当它为null时(这是因为左连接),分组将不会按照您想要的方式运行。您的查询应该如下所示:

SELECT
  u.id,
  max(u.name) as name,
  max(u.photo) as photo,
  COUNT(r.rating) AS totalratings,
  ROUND(AVG(r.rating), 0) AS avg_rating
FROM users u
LEFT JOIN reviews r ON r.fk_receiver_id = u.id
WHERE u.role = 2
GROUP BY u.id
请参阅上的运行示例