在SQL Server中获取用户的角色层次结构

时间:2014-09-12 11:39:23

标签: sql sql-server sql-server-2008

任何人都可以在SQL Server中为用户表结构提供用户的角色层次结构吗?如果还要给出SQL查询,将不胜感激。

用户层次结构必须如下所示......

                                   CEO
                                    |
                                   VP
                                    |
                       ----------------------------
                       |                           |
               Sales Manager 1                 Sales Manager 2
                       |                           |
              -----------------        ------------------------
              |               |        |           |          |
          Sales Person1      SP2       SP3         SP4        SP5

1 个答案:

答案 0 :(得分:1)

角色表:

RoleId 
RoleName 

用户表:

UserId 
UserName 
RoleId
ManagerId

这取决于您在查询中的内容。一个简单的就是这样:

select 
u.UserName as UserName,
r.RoleName as UserRole,
ISNULL(m.Name, 'No Manager') as ManagerName,
ISNULL(mr.Name, '') as ManagerRole
FROM Users u 
INNER JOIN Roles r on r.RoleId = u.RoleId
LEFT JOIN Users m on m.UserId = u.ManagerId
INNER JOIN Roles mr on r.RoleId = m.RoleId