首页 新闻 会员 周边 捐助

sql菜鸟求助 ,帮忙写一个查询语句

0
悬赏园豆:15 [已解决问题] 解决于 2014-04-20 03:22

情况如下

要求 根据 UserId  取出 SysMenus.Id=MenuId   然后通过 SysMenus.pid=SysMenus.id得出记录  

请问这样的sql语句怎么写,最后转换为存储过程 

 

我这样编写 没有通过

select distinct a.Id, a.Title, a.Target, a.FullName, a.Img, a.Sata, a.Url, a.Pid
from SysMenus a,UserMenus b where a.Id in (select b.MenuId from dbo.UserMenus where b.UserId=@userId) and a.pid=@pid

SpeakHero的主页 SpeakHero | 初学一级 | 园豆:31
提问于:2013-12-23 03:21
< >
分享
最佳答案
0

select distinct a.Id, a.Title, a.Target, a.FullName, a.Img, a.Sata, a.Url, a.Pid
from SysMenus a,UserMenus b where a.Id in (select b.MenuId from dbo.UserMenus where b.UserId=@userId) and a.pid=@pid

 

 楼主 你这个  UserMenus 定义成b  在括号里的子句是取不到的 因为括号里边的子句比外面的先执行 
收获园豆:3
mushishi | 菜鸟二级 |园豆:430 | 2013-12-23 11:59
其他回答(3)
0

select distinct a.Id, a.Title, a.Target, a.FullName, a.Img, a.Sata, a.Url, a.Pid
from SysMenus a where   a.pid in (select MenuId from dbo.UserMenus where UserId=@userId)

收获园豆:4
happydaily | 园豆:260 (菜鸟二级) | 2013-12-23 08:16
0

你这样写查询语句试试,是不是你想要的

select distinct a.Id, a.Title, a.Target, a.FullName, a.Img, a.Sata, a.Url, a.Pid
from SysMenus a

inner join UserMenus b on a.Id=b.MenuId and a.Pid=b.Id

where b.UserId=@userId

后你把它改写成存储过程

收获园豆:4
Albert Fei | 园豆:2102 (老鸟四级) | 2013-12-23 09:54

谢谢  我改成功了  

select distinct a.Id, a.Title, a.Target, a.FullName, a.Img, a.Sata, a.Url, a.Pid,b.Id as umid,b.UserId
from SysMenus a
inner join UserMenus b on b.MenuId=a.Id
where b.UserId=1 and pid=4

支持(0) 反对(0) SpeakHero | 园豆:31 (初学一级) | 2013-12-23 11:13

@SpeakHero: 这是你自己的头像吗

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2013-12-23 13:29

@Albert Fei: ....

支持(0) 反对(0) SpeakHero | 园豆:31 (初学一级) | 2013-12-23 13:30

@SpeakHero: 省略号代表是吗?

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2013-12-31 20:24
0

create procedure UP_GetMenus

@UserId int

as

select  Id, Title, Target, FullName, Img, Sata, Url, Pid
from SysMenus  where a.Id in (select MenuId from UserMenus where UserId=@UserId) and pid=Id

收获园豆:4
gaoshaowen | 园豆:206 (菜鸟二级) | 2013-12-23 09:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册