2014-09-05 3 views
2

다음 데이터가 UserMgr 테이블에 있습니다.관련 데이터가있는 개별 행 선택

ID | UserID | MgrDbID | DeptID 
1 | 111  | 2  | 1 
2 | 112  | NULL  | 1 
3 | 113  | 5  | 1 
4 | 113  | 6  | 2 
5 | 114  | NULL  | 1 
6 | 114  | NULL  | 2 
7 | 115  | 5  | 1 
8 | 115  | 6  | 2 
9 | 116  | 10  | 1 
10 | 117  | NULL  | 1 

위의 표에는 관리자를 포함한 모든 사용자가 있습니다. MgrDbID는 ID 열을 나타냅니다. 사용자에 대해 여러 레코드가있을 수 있으며이 경우 은 DeptID에 의해 해당 관리자의 여러 레코드가됩니다. 관리자의 경우 MgrDbID는 NULL입니다.

다음과 같이 (관리자가 아닌 사용자의 경우) 다음과 같이 해당 MgrDbID의 고유 한 UserID와 UserID가 포함 된 결과 세트가 필요합니다. 누구든지 아래의 쿼리를 도와주십시오.

UserID | MgrID 
111  | 112 
113  | 114 
115  | 114 
116  | 117 

답변

2
select u1.userid, min(u2.userid) as MgrID 
from UserMgr u1 
join UserMgr u2 on u1.UserMgrID = u2.ID 
group by u1.userid 
0

위의 원하는 반환하지 않은 결과 . 다음은 나를 위해 일했습니다.

SELECT u1.userID, u2.UserID 
FROM users u1 INNER JOIN users u2 ON u1.MgrDbID = u2.ID 
GROUP BY u1.userID, u2.UserID