2014-09-24 155 views
-2

表批准人:内加入的3个表

No Userid 
1 3 
2 7 

表用户:

No UserID RoleID 
1 3  1 
2 4  1 
3 5  2 
4 7  3 

表角色

RoleID Name 
1  ABC 
2  BCD 
3  CDE 

我想在表审批等来选择用户的角色名:

Userid Name 
3  ABC 
7  CDE 
+3

到目前为止,您尝试了什么以及您的解决方案存在什么问题? – Pred 2014-09-24 11:06:52

回答

1

我不是100%肯定,为什么approver.no是对用户和审批表....我要去假设用户id是独一无二的在这两种情况下,如果.....那的情况下这应该工作:

select 
    u.userid, 
    r.name 
from 
    Approver as a 
    inner join [Users] as u on a.userId = u.UserId 
    inner join [Roles] as r on u.roleId = r.roleId 

如果情况并非如此,你所需要的approver.no user.UserI d组合是唯一比下面应该工作:http://sqlfiddle.com/#!3/0daa9/4

注意到第二个查询返回对一个结果:

select 
    u.userid, 
    r.name 
from 
    Approver as a 
    inner join [Users] as u on a.userId = u.UserId 
    and a.No = u.No 
    inner join [Roles] as r on u.roleId = r.roleId 

这两个至于结果集的担忧可以在这里找到之间的差异提供的数据

0
SELECT U.UserID, 
     Name 
FROM Approver A 
     JOIN Users U 
      ON A.UserId = U.UserId 
     JOIN Roles R 
      ON R.RoleId = U.RoleId 

SQL FIDDLE DEMO

1
select 
    a.Userid, 
    r.Name 
from 
    Approver a 
    join Users u on a.no = u.no 
    join Roles r on u.RoleID = r.RoleID 
0
SELECT Approver.UserId, Name from Approver INNER JOIN Users 
on Approver.No=Users.No 
    INNER JOIN Roles 
on Users.RoleID=Roles.RoleID