我正在创建一个社交移动应用程序,它有组并且组可以有用户。我正在尝试编写一个查询,以便获取所有组及其中的用户数量。
注意:群组也可以有 0 个用户。
即使组有零个用户,我仍然需要获取其信息。我该怎么做呢?我尝试过:
Select *, count(ug.group_id) from groups g
left join images i ON(g.group_image_id = i.image_id)
left join location l ON(g.group_location_id = l.location_id)
.
.
left join user_group ug on(ug.gorup_id = g.group_id)
group by ug.group_id;
现在,此查询没有给我提供具有零个用户的组。如何更改它,以便它显示所有组,即使组有 0 个用户。
最佳答案
使用 SELECT * 和 GROUP BY 是 MySQL 所厌恶的。就您而言,它看起来并没有什么问题,因为 image
和 location
似乎与 具有 0:1 关系组
。这是非常糟糕的做法。
这是一种符合 ANSI 的查询编写方式。如果您想要 JOINing 几个表的完整结果集以及计数,则仅添加计数部分作为表达式。
Select *, (select count(ug.group_id)
from user_group ug
where ug.gorup_id = g.group_id) GroupUserCount
from groups g
left join images i ON(g.group_image_id = i.image_id)
left join location l ON(g.group_location_id = l.location_id)
.
.
关于php - MySql 中的按计数分组(用户和组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226851/