php - MySql 中的按计数分组(用户和组)

标签 php mysql sql

我正在创建一个社交移动应用程序,它有组并且组可以有用户。我正在尝试编写一个查询,以便获取所有组及其中的用户数量。

注意:群组也可以有 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 所厌恶的。就您而言,它看起来并没有什么问题,因为 imagelocation 似乎与 具有 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/

相关文章:

PHP/MySQL : Date lower than today

mysql - MySQL 更新重复记录

mysql - SQL查询删除

mysql - 从 MySQL 表中选择每个第一个唯一的列元组

mysql - 选择中的初始阶段

mysql - 在 MySQL 中使用 NOT IN 和 OR 无法按预期工作

php - 使用 sshpass 身份验证返回空字符串

php - 数据库和用户照片管理

php - 如何从wordpress网站获取json响应

php - MySQL选择最近4小时内的记录