由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 求教一条MS SQL语句
相关主题
pls help me in this Sql query请问sql语句能不能实现这样的功能
谢谢,但是...Re: 急问MS ACCESS的问题这“精妙sql语句”是错误的吗
如何寫此 SQL 查詢?SQL中怎样用定制列排序?
请教 oracle sql developera complex sql query, high hand help!!!
How to get other columns after UNION?Oracle急问
aks a simple SQL question请教SQL问题,谢谢
Any faster way to retrieve only one record?新手请教:为什么这个Query不work
请教个SQL问题怎么写这个total的query
相关话题的讨论汇总
话题: userid话题: select话题: group话题: groupid话题: where
进入Database版参与讨论
1 (共1页)
b********2
发帖数: 855
1
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。。。。郁闷死我了。请高手们赐教,万分感谢。
B*****g
发帖数: 34098
2
不是专业DBA,帮你顶一下

【在 b********2 的大作中提到】
: GroupMember Table结构请见图片1。
: 其中,GroupMemberID是PK。UserID是FK。
: 我想实现的功能。
: UserID=3,作为一个输入的变量,然后列出该用户所在的所有Group,并且统计该Group里
: 相关的人数。
: 前半部分,也就是显示该用户所在的所有Group我已经解决,因为这个最容易。但是如
: 何显示出相关的人数,这个部分真的让我非常非常的抓狂啊。。。
: 我瞎写了一小段代码,请高手们指教。
: SELECT COUNT(UserID) AS Counter
: FROM GroupMembers

i****a
发帖数: 36252
3
SELECT GroupID, COUNT(1) AS Counter
FROM GroupMembers
WHERE UserID=3
GROUP BY GroupID

【在 b********2 的大作中提到】
: GroupMember Table结构请见图片1。
: 其中,GroupMemberID是PK。UserID是FK。
: 我想实现的功能。
: UserID=3,作为一个输入的变量,然后列出该用户所在的所有Group,并且统计该Group里
: 相关的人数。
: 前半部分,也就是显示该用户所在的所有Group我已经解决,因为这个最容易。但是如
: 何显示出相关的人数,这个部分真的让我非常非常的抓狂啊。。。
: 我瞎写了一小段代码,请高手们指教。
: SELECT COUNT(UserID) AS Counter
: FROM GroupMembers

B*****g
发帖数: 34098
4
你这个和lz的有什么区别。

Group里
是如

【在 i****a 的大作中提到】
: SELECT GroupID, COUNT(1) AS Counter
: FROM GroupMembers
: WHERE UserID=3
: GROUP BY GroupID

i****a
发帖数: 36252
5
without showing GroupID, who know what is what ah

【在 B*****g 的大作中提到】
: 你这个和lz的有什么区别。
:
: Group里
: 是如

B*****g
发帖数: 34098
6
lz都说这个答案是不对滴

【在 i****a 的大作中提到】
: without showing GroupID, who know what is what ah
i****a
发帖数: 36252
7
with out order by, without outputing the group id, lz does not know what
those numbers are

【在 B*****g 的大作中提到】
: lz都说这个答案是不对滴
B*****g
发帖数: 34098
8
一般来说count得出来都是1

【在 i****a 的大作中提到】
: with out order by, without outputing the group id, lz does not know what
: those numbers are

t****a
发帖数: 1212
9
抛砖引玉:
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
i****a
发帖数: 36252
10
SELECT GroupID, COUNT(1) AS cnt
FROM dbo.GroupMember
WHERE GroupID IN
(
SELECT GroupID
FROM dbo.GroupMember
WHERE UserID = 3
)
GROUP BY GroupID

【在 B*****g 的大作中提到】
: 一般来说count得出来都是1
相关主题
aks a simple SQL question请问sql语句能不能实现这样的功能
Any faster way to retrieve only one record?这“精妙sql语句”是错误的吗
请教个SQL问题SQL中怎样用定制列排序?
进入Database版参与讨论
B*****g
发帖数: 34098
11
如果只让scan table一次

【在 i****a 的大作中提到】
: SELECT GroupID, COUNT(1) AS cnt
: FROM dbo.GroupMember
: WHERE GroupID IN
: (
: SELECT GroupID
: FROM dbo.GroupMember
: WHERE UserID = 3
: )
: GROUP BY GroupID

b********2
发帖数: 855
12
哈哈,多谢这么多回复。我马上就去实际试验下各位的建议。
如果把这个问题还个方式来表达,其实就非常简单了。
某学生TAKE了5门课,我想知道这5门课分别都有多少学生,并同时显示该门课的相关信息
b********2
发帖数: 855
13
IMAJIA这个能用,万分感谢啊。可惜俺实在没包子。。。。能先欠着吗。。。
b********2
发帖数: 855
14
更新一下我的WORKING CODES
见图。
谢谢大家的回复。
这个QUERY现在可以返回所有该用户所在GROUP的详细信息,并且包括该GROUP所有的人
数。
可惜不知道PERFORMANCE如何了。。。估计差的要死,呵呵。
i****a
发帖数: 36252
15
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 的大作中提到】
: 更新一下我的WORKING CODES
: 见图。
: 谢谢大家的回复。
: 这个QUERY现在可以返回所有该用户所在GROUP的详细信息,并且包括该GROUP所有的人
: 数。
: 可惜不知道PERFORMANCE如何了。。。估计差的要死,呵呵。

i****a
发帖数: 36252
16
太高級,想不出來

【在 B*****g 的大作中提到】
: 如果只让scan table一次
b********2
发帖数: 855
17
哈哈,多谢,你这个比我那个更有可读性了。。。我那个差点把自己给绕死了。。。
CreatorName那里写的好像不对,呵呵。俺睡觉去了。
f***g
发帖数: 10
18
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
b********2
发帖数: 855
19
哇塞,你这个QUERY完美了。。。赞。多谢多谢。

【在 f***g 的大作中提到】
: 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

B*****g
发帖数: 34098
20
performance should be worse, hehe
SELECT groupid, COUNT ( * ) CNT
FROM groupmembers
GROUP BY groupid
HAVING SUM (CASE WHEN userid = 3 THEN 1 ELSE 0 END) > 0

【在 i****a 的大作中提到】
: 太高級,想不出來
1 (共1页)
进入Database版参与讨论
相关主题
怎么写这个total的queryHow to get other columns after UNION?
MySQL语句请教aks a simple SQL question
Another oneAny faster way to retrieve only one record?
help about SQL for ACCESS请教个SQL问题
pls help me in this Sql query请问sql语句能不能实现这样的功能
谢谢,但是...Re: 急问MS ACCESS的问题这“精妙sql语句”是错误的吗
如何寫此 SQL 查詢?SQL中怎样用定制列排序?
请教 oracle sql developera complex sql query, high hand help!!!
相关话题的讨论汇总
话题: userid话题: select话题: group话题: groupid话题: where