我的数据库中有两个表:
1.groups
|------------|------------|------------|
|GroupId |GroupName |GroupDesc |
|------------|------------|------------|
|3 |Group 3 |3rd Group |
|5 |Group 5 |5th Group |
|7 |Group 7 |7th Group |
|9 |Group 9 |9th Group |
|------------|------------|------------|
2.groupdetail
|------------|--------------|-----------------|
|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中显示GroupId,GroupName,GroupDesc和TotalMember(来自他加入的每个组的总成员),并且他的GroupConfirmation已加入
我已成功选择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 |
|------------|-------------|------------|------------|
有人可以帮帮我吗?
谢谢你
答案 0 :(得分:3)
您需要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'
。
答案 1 :(得分:1)
我相信GROUP BY可能有所帮助。