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它对我有用。