2014-09-24 2 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 

나는 테이블 승인 등의 사용자의 rolename을 선택합니다 :

Userid Name 
3  ABC 
7  CDE 
+3

지금까지 무엇을 시도했으며 솔루션에 어떤 문제가 있습니까? – Pred

답변

1

approver.no가 사용자와 승인자 테이블에 왜 나는 확실히 100 % 아니에요 .... 내가 userId를 고유 가정거야 그런 경우가 아닌 경우

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 필요합니다 경우 이잖아 경우 두 상황에서 .....이 작업을해야합니다 두 번째 쿼리는 단일 결과에 대한을 반환 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 

의 차이 : 다음과 같은 일을해야보다 D 콤보은 고유해야합니다 제공된 데이터

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