我在mySql数据库中有两个表,如下所示:
组:
| IDGroup| IDRat| Type| Category|
| 708 | 354 | 1 | A |
| 709 | 354 | 1 | C |
其中IDGroup
是主键。
用户:
| IDUser| Name| Surname | IDGroup |
| 1 | John| Doe | 708 |
| 2 | Mick| Caine | 708 |
主键IDUser
我想创建一个查询,该查询接收 IDRat 作为参数并返回如下结果:
| IDGroup| Type| Category | Number_of_Users_in_this_group |
顾名思义,第四列表示与组关联的用户数。
例如,传递我想要的IDRat = 354
获得以下结果:
| IDGroup| Type| Category | Number_of_Users_in_this_group |
| 708 | 1 | A | 2 |
| 709 | 1 | C | 0 |
以下查询执行所需的操作:
SELECT g.IDGroup, g.Type, g.Category, COUNT(u.IDGroup)
FROM GROUPS g left join
USERS u
on g.IDGroup = u.IDGroup
WHERE IDRat = XXX
GROUP BY g.IDGroup;
left join
保留所有组。 当没有匹配项时,count()
将返回0
。 where
子句执行筛选。
SELECT IDGroup,Type,Category,COUNT(u.IDGroup) as NoUsers
FROM GROUPS g
LEFT JOIN USERS u ON g.IDGroup=u.IDGroup
WHERE IDRat=354 GROUP BY g.IDGroup
选择必填列并按 IDGroup 连接这些表和分组结果
select IDGroup,Type,Category,COUNT(IDGroup) as Number_of_Users_in_this_group
FROM GROUPS JOIN USERS WHERE GROUPS .IDGroup=USERS .IDGroup
HAVING IDRat=354 GROUP BY IDGroup