User 表
userid
usernameUserRole表
userid
roleidRole表
roleid
nameRolePermission表
roleid
permissionidpermission表
permissionid
name一个用户有多个角色,一个角色有多个许可。
现在我只有一个用户的userid,根据这个userid检索出他有几个许可。
请问这个存储过程如何写啊?

解决方案 »

  1.   

    create procedure [dbo].[getpermission]
    @userid int
    as
    select distinct
        permissionid
    from
        [dbo].[user] as u
    join
        [dbo].[userrole] as r
    on
        u.[userid] = r.[userid]
    join
        [RolePermission] as p
    on
        r.[roleid] = p.[roleid]
    where
        u.userid = @userid
      

  2.   

    User 表
    userid 主键
    usernameUserRole表
    userid
    roleidRole表(角色)
    roleid 主键
    nameRolePermission表
    roleid
    permissionidpermission表(许可)
    permissionid 主键
    name一个用户有多个角色,一个角色有多个许可。
    现在我只有一个用户的userid,根据这个userid检索出他有几个许可。
    请问这个存储过程如何写啊?user--role为1:n
    role -- permission 为1:n
      

  3.   

    select a.userid ,a.username from User a left outer join UserRole b on a.userid = b.userid left outer join Role c on b.roleid = c.roleid left outer join rolePermission d on b.roleid = d.permissionid left outer join permission e on d.permissionid = e.permissionid
      

  4.   

    这个完全不用存储过程嘛,,浪费,,直接select * in permission where permissionid in (select permissionid from RolePermission where roleid in ( select roleid form UserRole where userid = userid ))
      

  5.   

    antoniusguo(anton) 可以返回 permission里的name吗
      

  6.   

    antoniusguo(anton) 可以返回 permission里的name吗