一条较复杂的SQL语句,请帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/28 00:10:05
userinfo表 用户基础表
字段:
userid //用户ID
username //用户名称
loginname//登录名称
其他字段省略

usertoorg表 组织关系表
字段:
userid//用户ID
orgid//组织ID
其他字段省略

projuserinfo表 用户信息表
字段:
userid //用户ID
loginname//用户名称
其他字段省略

得到用户结果集SQL语句:
select * from userinfo a,usertoorg b,projuserinfo c
where a.userid=b.userid and b.userid=a.userid;

现在有新表
activity表 活动表
字段:
acid //活动ID
acname//活动名称
其他字段省略

activitytoorg表 活动关系表 多对多关系
字段:
userid//用户ID,projuserinfo表用户ID
acid //活动ID
其他字段省略

我现在要查询出结果,首行表头样式如下:

用户ID--用户名称--登录名称--参加活动次数

记录含有很多条,次数要和用户一一对应。用一条SQL语句能写出来吗?
一句SQL就是一句,请帮忙,谢谢!我实在想不出这条sql语句怎么设计,谢谢了
看来我的问题,我没有叙述清楚,projuserinfo和userinfo有什么关系,这两个表的字段几乎一样,只是userinfo,是整个系统的基础表!
我的意思是:通过得到用户结果集SQL语句:
select * from userinfo a,usertoorg b,projuserinf

不知道projuserinfo和userinfo有什么关系。最后需要的“用户ID”和“用户名称”是指哪个表的?
假定是userinfo中的“用户ID”和“用户名称”:
SELECT a.userid AS 用户ID,a.username AS 用户名称,a.loginname AS 登录名称,COUNT(b.acid) AS 参加活动次数 FROM activitytoorg b INNER JOIN userinfo a ON a.userid=b.userid GROUP BY a.userid,a.username,a.loginname

如果仅仅是显示次数的话。
最简单的办法:
造一个视图名称为:activitycount
视图的语句为
select userid,count(*) from activitytoorg group by userid;
然后程序中就用以下代码:
select * from userinfo a,usertoorg b,projuserinfo c ,activitycount d
where a.userid=b.userid and b.userid=a.userid and a.userid=activitycount.userid;

我来看看。你看看下面的语句可以实现你的功能不:

select a.userid,a.username,a.loginname,count(*)
from userinfo as a,activitytoorg as b
where a.userid=b.userid

无论行不行,都要告诉我你运行的结果哈!

select userinfo.userid as 用户ID,userinfo.username as 用户名称,userinfo.loginname as 登陆名称,count(*) as 参加活动次数

from userinfo,activitytoorg,activity
where
activitytoorg.userid=userinfo