b*2
2 楼
GroupMember Table结构请见图片1。
其中,GroupMemberID是PK。UserID是FK。
我想实现的功能。
UserID=3,作为一个输入的变量,然后列出该用户所在的所有Group,并且统计该Group里
相关的人数。
前半部分,也就是显示该用户所在的所有Group我已经解决,因为这个最容易。但是如
何显示出相关的人数,这个部分真的让我非常非常的抓狂啊。。。
我瞎写了一小段代码,请高手们指教。
SELECT COUNT(UserID) AS Counter
FROM GroupMembers
GROUP BY UserID
运行以上代码,可以显示出TABLE里所有不同的GROUP的人数。
但是如果我这样写。
SELECT COUNT(UserID) AS Counter
FROM GroupMembers
WHERE UserID=3
GROUP BY GroupID
结果就是错误的。。。。
毕竟不是专业DBA。。。。郁闷死我了。请高手们赐教,万分感谢。
其中,GroupMemberID是PK。UserID是FK。
我想实现的功能。
UserID=3,作为一个输入的变量,然后列出该用户所在的所有Group,并且统计该Group里
相关的人数。
前半部分,也就是显示该用户所在的所有Group我已经解决,因为这个最容易。但是如
何显示出相关的人数,这个部分真的让我非常非常的抓狂啊。。。
我瞎写了一小段代码,请高手们指教。
SELECT COUNT(UserID) AS Counter
FROM GroupMembers
GROUP BY UserID
运行以上代码,可以显示出TABLE里所有不同的GROUP的人数。
但是如果我这样写。
SELECT COUNT(UserID) AS Counter
FROM GroupMembers
WHERE UserID=3
GROUP BY GroupID
结果就是错误的。。。。
毕竟不是专业DBA。。。。郁闷死我了。请高手们赐教,万分感谢。
B*g
4 楼
不是专业DBA,帮你顶一下
【在 b********2 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: GroupMember Table结构请见图片1。
: 其中,GroupMemberID是PK。UserID是FK。
: 我想实现的功能。
: UserID=3,作为一个输入的变量,然后列出该用户所在的所有Group,并且统计该Group里
: 相关的人数。
: 前半部分,也就是显示该用户所在的所有Group我已经解决,因为这个最容易。但是如
: 何显示出相关的人数,这个部分真的让我非常非常的抓狂啊。。。
: 我瞎写了一小段代码,请高手们指教。
: SELECT COUNT(UserID) AS Counter
: FROM GroupMembers
【在 b********2 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: GroupMember Table结构请见图片1。
: 其中,GroupMemberID是PK。UserID是FK。
: 我想实现的功能。
: UserID=3,作为一个输入的变量,然后列出该用户所在的所有Group,并且统计该Group里
: 相关的人数。
: 前半部分,也就是显示该用户所在的所有Group我已经解决,因为这个最容易。但是如
: 何显示出相关的人数,这个部分真的让我非常非常的抓狂啊。。。
: 我瞎写了一小段代码,请高手们指教。
: SELECT COUNT(UserID) AS Counter
: FROM GroupMembers
A*s
5 楼
谜面太差,改过再来。。。我必将6个豹子拿下,,,
i*a
6 楼
SELECT GroupID, COUNT(1) AS Counter
FROM GroupMembers
WHERE UserID=3
GROUP BY GroupID
【在 b********2 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: GroupMember Table结构请见图片1。
: 其中,GroupMemberID是PK。UserID是FK。
: 我想实现的功能。
: UserID=3,作为一个输入的变量,然后列出该用户所在的所有Group,并且统计该Group里
: 相关的人数。
: 前半部分,也就是显示该用户所在的所有Group我已经解决,因为这个最容易。但是如
: 何显示出相关的人数,这个部分真的让我非常非常的抓狂啊。。。
: 我瞎写了一小段代码,请高手们指教。
: SELECT COUNT(UserID) AS Counter
: FROM GroupMembers
FROM GroupMembers
WHERE UserID=3
GROUP BY GroupID
【在 b********2 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: GroupMember Table结构请见图片1。
: 其中,GroupMemberID是PK。UserID是FK。
: 我想实现的功能。
: UserID=3,作为一个输入的变量,然后列出该用户所在的所有Group,并且统计该Group里
: 相关的人数。
: 前半部分,也就是显示该用户所在的所有Group我已经解决,因为这个最容易。但是如
: 何显示出相关的人数,这个部分真的让我非常非常的抓狂啊。。。
: 我瞎写了一小段代码,请高手们指教。
: SELECT COUNT(UserID) AS Counter
: FROM GroupMembers
A*s
7 楼
草原上升起不落的月亮
R*s
17 楼
上面都不对,都不够风云...
t*a
18 楼
抛砖引玉:
SELECT
GroupID
, UserCount
FROM (
SELECT GroupID
FROM GroupMembers
WHERE UserID=3
) GRP INNER JOIN (
SELECT
GroupID
, COUNT(*) AS UserCount
FROM GroupMembers
GROUP BY
GroupID
) CNT
ON
GRP.GroupID = CNT.GroupID
SELECT
GroupID
, UserCount
FROM (
SELECT GroupID
FROM GroupMembers
WHERE UserID=3
) GRP INNER JOIN (
SELECT
GroupID
, COUNT(*) AS UserCount
FROM GroupMembers
GROUP BY
GroupID
) CNT
ON
GRP.GroupID = CNT.GroupID
b*2
24 楼
哈哈,多谢这么多回复。我马上就去实际试验下各位的建议。
如果把这个问题还个方式来表达,其实就非常简单了。
某学生TAKE了5门课,我想知道这5门课分别都有多少学生,并同时显示该门课的相关信息
如果把这个问题还个方式来表达,其实就非常简单了。
某学生TAKE了5门课,我想知道这5门课分别都有多少学生,并同时显示该门课的相关信息
b*2
26 楼
IMAJIA这个能用,万分感谢啊。可惜俺实在没包子。。。。能先欠着吗。。。
b*2
28 楼
更新一下我的WORKING CODES
见图。
谢谢大家的回复。
这个QUERY现在可以返回所有该用户所在GROUP的详细信息,并且包括该GROUP所有的人
数。
可惜不知道PERFORMANCE如何了。。。估计差的要死,呵呵。
见图。
谢谢大家的回复。
这个QUERY现在可以返回所有该用户所在GROUP的详细信息,并且包括该GROUP所有的人
数。
可惜不知道PERFORMANCE如何了。。。估计差的要死,呵呵。
i*a
30 楼
DECLARE @UserID AS INT
DECLARE @UserName AS VARCHAR(50)
SET @UserID = 3
SELECT @UserName = UserName
FROM dbo.[User]
WHERE UserID = @UserID
SELECT gm.GroupID
, @UserID AS UserID
, MAX(g.GroupName) AS GroupName
, COUNT(1) AS cnt
, @UserName AS CreatorName
FROM dbo.GroupMember gm
INNER JOIN dbo.[Group] g
ON gm.GroupID = g.GroupID
WHERE gm.GroupID IN ( SELECT GroupID
FROM dbo.GroupMember
WHERE UserID = @UserID )
GROUP BY gm.GroupID
【在 b********2 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 更新一下我的WORKING CODES
: 见图。
: 谢谢大家的回复。
: 这个QUERY现在可以返回所有该用户所在GROUP的详细信息,并且包括该GROUP所有的人
: 数。
: 可惜不知道PERFORMANCE如何了。。。估计差的要死,呵呵。
DECLARE @UserName AS VARCHAR(50)
SET @UserID = 3
SELECT @UserName = UserName
FROM dbo.[User]
WHERE UserID = @UserID
SELECT gm.GroupID
, @UserID AS UserID
, MAX(g.GroupName) AS GroupName
, COUNT(1) AS cnt
, @UserName AS CreatorName
FROM dbo.GroupMember gm
INNER JOIN dbo.[Group] g
ON gm.GroupID = g.GroupID
WHERE gm.GroupID IN ( SELECT GroupID
FROM dbo.GroupMember
WHERE UserID = @UserID )
GROUP BY gm.GroupID
【在 b********2 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 更新一下我的WORKING CODES
: 见图。
: 谢谢大家的回复。
: 这个QUERY现在可以返回所有该用户所在GROUP的详细信息,并且包括该GROUP所有的人
: 数。
: 可惜不知道PERFORMANCE如何了。。。估计差的要死,呵呵。
b*2
34 楼
哈哈,多谢,你这个比我那个更有可读性了。。。我那个差点把自己给绕死了。。。
CreatorName那里写的好像不对,呵呵。俺睡觉去了。
CreatorName那里写的好像不对,呵呵。俺睡觉去了。
f*g
36 楼
SELECT g.GroupId, g.UserID, (SELECT COUNT(c.UserID) FROM GroupMembers AS c
WHERE c.GroupId = g.GroupId) AS GroupUserCount
FROM GroupMembers AS g
WHERE g.UserId = 3
WHERE c.GroupId = g.GroupId) AS GroupUserCount
FROM GroupMembers AS g
WHERE g.UserId = 3
相关阅读