首页 新闻 搜索 专区 学院

求一sql语句,很急了

0
[已解决问题] 解决于 2008-10-28 18:38

一般的权限设置系统.

三个表.

user表结构

userid

...

remak

action 菜单表

actionid

...

他们两个的关系表

role

userid

actionid

 

现在我想根据user表中remak为某一值,求这些user共同在role拥有的actionid.

也想了,可是不知道怎么处理共同这一下子,因为其中有一个用户或几个用户特有的actionid是不需要查出来的。

Jerry Qian的主页 Jerry Qian | 初学一级 | 园豆:19
提问于:2008-10-21 13:08
< >
分享
最佳答案
0

SELECT [action].[actionid], COUNT(*) AS c
FROM [action]
    INNER JOIN [role] ON [action].[actionid] = [role].[actionid]
    INNER JOIN [user] ON [user].[userid] = [role].[userid]
WHERE ([user].[remark] = 'a')
GROUP BY [action].[actionid]
HAVING (COUNT(*) > 1)

这个就可以,我试过了,你拿你的数据测试一下,有问题下面留~~~(where后面那个remark就是你要指定的remark值,这个语句可以找出所有具有你指定的remark的用户中被超过1人使用的actionid,如果需要找出所有人都有的actionid,只需要把having后面修改一下就可以了,如果不能在程序中算出这个值,就需要两个count,比较麻烦)

PS:你的三个表名全是系统关键字或预留关键字,考虑改下哈

丁学 | 专家六级 |园豆:18530 | 2008-10-21 13:22
其他回答(1)
0

楼上的,不要用我头像>_<

zjy | 园豆:3194 (老鸟四级) | 2008-10-21 14:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册