我的数据库中有两个表:
1.组
|------------|------------|------------|
|GroupId |GroupName |GroupDesc |
|------------|------------|------------|
|3 |Group 3 |3rd Group |
|5 |Group 5 |5th Group |
|7 |Group 7 |7th Group |
|9 |Group 9 |9th Group |
|------------|------------|------------|
2.组细节
|------------|--------------|-----------------|
|GroupId |MemberUsername|GroupConfirmation|
|------------|--------------|-----------------|
|3 |User001 |Pending |
|3 |User002 |Joined |
|3 |User003 |Joined |
|3 |User004 |Joined |
|5 |User001 |Joined |
|5 |User004 |Joined |
|7 |User004 |Joined |
|------------|--------------|-----------------|
我希望能够从选定的 MemberUsername 和他的 GroupConfirmation 中显示 GroupId、GroupName、GroupDesc 和 TotalMember(来自他加入的每个组的总成员)
我已成功选择 GroupId、GroupName、GroupDesc 使用:
SELECT a.GroupId, GroupName, GroupDesc
FROM groups a, groupdetail b
WHERE a.GroupId =b.GroupId
AND b.MemberUsername = 'user004'
AND b.GroupConfirmation = 'Joined'
但我不知道如何计算每个组的总成员数,我尝试使用 COUNT(b.MemberUsername) 但结果只显示一行,
这是我想要得到的结果集的例子(来自User004)
|------------|-------------|------------|------------|
|GroupId |GroupName |GroupDesc |TotalMember |
|------------|-------------|------------|------------|
|3 |Group 3 |3rd Group |4 |
|5 |Group 5 |5th Group |2 |
|7 |Group 7 |7th Group |1 |
|------------|-------------|------------|------------|
有人可以帮我吗?
谢谢你
你需要一个group by
和count
:
SELECT g.GroupId, g.GroupName, g.GroupDesc, COUNT(*)
FROM groups g JOIN
groupdetail gd
ON g.GroupId = gd.GroupId
GROUP BY g.GroupId, g.GroupName, g.GroupDesc;
如果您想计算所有成员,则WHERE
子句是多余的。如果您想要用户加入的组总数,则添加以下 having
子句:
HAVING SUM(gd.MemberUsername = 'user004' AND gd.GroupConfirmation = 'Joined') > 0
这将仅根据具有 'user004'
的组过滤组。
我是一名优秀的程序员,十分优秀!