Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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_Database - Fatal编程技术网

Php 无法选择带有案例条件的计数

Php 无法选择带有案例条件的计数,php,mysql,database,Php,Mysql,Database,我有两张桌子: 用户组 用户\组\有\个用户 我想统计每个组的用户数,并得出类似的结果: id name user_count 2 gn2 2 1 gn1 0 我试过这个问题 select g.*, count(cg.user_id) as user_count from user_groups as g left join user_group_has_users as cg on cg.user_group_id = g.id wh

我有两张桌子:

用户组

用户\组\有\个用户

我想统计每个组的用户数,并得出类似的结果:

id    name    user_count
2     gn2     2
1     gn1     0
我试过这个问题

select g.*,
       count(cg.user_id) as user_count
from user_groups as g
left join user_group_has_users as cg on cg.user_group_id = g.id
where g.created_user = 3
SELECT g.* ,COUNT(cg.user_id) AS user_count 
FROM user_groups g 
LEFT JOIN user_group_has_users cg ON cg.group_id = g.id 
WHERE  g.created_user = 3 
GROUP BY g.id 
ORDER BY user_count DESC ;
但它只返回一行。我不明白为什么会这样。
请在这方面帮助我。

左连接,其中条件是内部连接。你可能想要

select 
ug.id,
ug.name,
count(ughu.user_id) as user_count 
from user_groups ug 
left join user_groups_has_users ughu on ughu.group_id = ug.id 
and ug.created_user = 3 
group by ug.id
order by user_count desc ;
如果仍要使用创建的
用户=3
筛选数据,请使用内部联接,并将条件移动到
where子句

使用此查询

select g.*,
       count(cg.user_id) as user_count
from user_groups as g
left join user_group_has_users as cg on cg.user_group_id = g.id
where g.created_user = 3
SELECT g.* ,COUNT(cg.user_id) AS user_count 
FROM user_groups g 
LEFT JOIN user_group_has_users cg ON cg.group_id = g.id 
WHERE  g.created_user = 3 
GROUP BY g.id 
ORDER BY user_count DESC ;

小心骨料和接头。在某些情况下,数字被夸大了

看看这是否适合您:

select  g.*, 
      ( SELECT  count(*)
            FROM  user_group_has_users
            WHERE  user_group_id = g.id 
      ) AS user_count
    from  user_groups as g
    where  g.created_user = 3

我不明白那个输出在算什么。它在算属于该组的用户总数。试试这个,在你的查询组之后添加cg.user\U group\U IDThank@ZinalShah它对我有用。