1

我在mysql数据库中有两个表

团体

id|name
_______
1 |red
2 |blue
3 |green
4 |white

和用户

id|name  |group
_______________
1 |joe   |1
2 |max   |1
3 |anna  |2
4 |lisa  |2

所以... joe 和 max 属于“red”组,anna 和 lisa 属于“blue”组。

如何制作包含该组中人数的组的简单列表 例如

red - 2
blue - 2
green - 0
white - 0
4

6 回答 6

1

检查这是否有效....

SELECT COUNT(*), groups.name FROM groups, users WHERE users.group=groups.id GROUP BY groups.name

更新

SELECT groups.name, COUNT(users.*) FROM groups LEFT JOIN users
ON groups.id=users.group GROUP BY groups.name

这将保留颜色,即使它们没有任何相关的名称

于 2012-04-11T16:35:32.353 回答
1

大多数其他答案基本上是正确的,但忘记了一个重要的细节:GROUP是SQL中的保留字,所以你的列名必须转义:

SELECT groups.name, COUNT(*) AS total_members
FROM groups 
LEFT OUTER JOIN users 
ON users.`group` = groups.id
GROUP BY groups.id
于 2012-04-11T16:42:24.157 回答
0

试试这个:

select g.name, count(u.id) from groups g
left join users u on g.id = u.group
group by g.id, g.name
于 2012-04-11T16:37:23.997 回答
0

试试这个

SELECT COUNT(g.id) as count, g.name 
FROM groups as g
LEFT JOIN users as u 
ON u.group = g.id
GROUP BY g.id
于 2012-04-11T16:37:31.847 回答
0

这应该工作

SELECT g.*, COUNT(DISTINCT u.id) FROM `groups` g
INNER JOIN `users` u on g.id = u.group
GROUP BY u.id
于 2012-04-11T16:46:02.223 回答
0

也许这应该工作

SELECT g.name, COUNT( u.id ) AS Totoal
FROM  `groups` g
INNER JOIN  `users` u ON g.id = u.group
GROUP BY g.id
于 2012-04-11T17:00:07.770 回答