|
查看: 1438|回复: 3
|
SQL Query问题, 不知道把这答案找出来... 救命啊...
[复制链接]
|
|
|
发表于 27-4-2008 10:28 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 30-4-2008 02:04 PM
|
显示全部楼层
很简单,可以试试这个:
Table [Member]
- [Idx] int identity(1,1) not null
- [Code] nvarchar(20) null
Table [MemInfo]
- [Idx] int identity(1,1) not null
- [Code] nvarchar(20) null
- [Message] nvarchar(255) null
select top 50 t2.Code as [MemberCode], count(t1.Idx) as [Count]
from MemInfo t1 inner join Member t2 on t1.Code= t2.Code where t1.Message like '%ID50%'
group by t2.Code order by count(t1.Idx) desc |
|
|
|
|
|
|
|
|
|
|
发表于 8-5-2008 05:29 PM
|
显示全部楼层
最简单的方法就是使用SELECT Count()指令
假设你的会员table名字为 user, 会员讯息table为 user_message, 而在这两个table 里面,你的会员号码的column name 是 user_id,寻找单个会员的message count你可以使用:
SELECT Count(user_id) AS count FROM user_message
WHERE user_id = 'ID50'
如果你要搜寻任何ID里面包括“ID50”这个字眼的话,
SELECT Count(user_id) AS count FROM user_message
WHERE user_id LIKE '%ID50%'
你的第二个要求,排行榜,可以用以下的statement 来获得(你可能得根据你的Table design来另行修改一些keyword):
SELECT DISTINCT user_id, COUNT(user_id) AS count FROM user_message
GROUP BY user_id
ORDER BY count DESC
要注意的是,以上 statement 只会计算 user_message 里面的排行,user 里面,不曾发表过信息的会员,由于其ID并没有在 user_message 里面,他们并不会被包括在这个 Query 的 result 里面,如果你要包含那些不曾发表过信息的,就得靠 Script 或其他 programming language 的帮助了。由于你没有阐明你是用什么 Language/Script,所以我没有提供这方面的 example.
EDIT: 昨晚想了一下,发觉事实上你可以使用 JOINT 来获得包含没有发表过讯息的会员在内的结果,不过由于我手头上没有类似的 table, 无法测试求证 statement 的正确性,所以没有发表在这里了。
[ 本帖最后由 geekman 于 9-5-2008 10:45 AM 编辑 ] |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|