2013-10-08 3 views
2

에 대한 별명을 가져 myFiddleSQL Server는 바이올린 확인하십시오 쿼리

쿼리

create table Emp(empId int primary key, EmpName varchar(50),MngrID int) 

insert into Emp(empId,EmpName,MngrID)values(1,'A',2) 
insert into Emp(empId,EmpName,MngrID)values(2,'B',null) 

A는 mangr B를 가지고 있지만 쿼리에서 레코드를 가져 오는 동안 나에게

EmpId   EmpName  MngrName(alias MngrName) 
1     A   B 

2     B   null 
을 보여줍니다 그래서 더 mngr이 없습니다

검색어를 사용하여 위의 데이터를 가져 오는 방법

답변

1

같은 EMP에서 관리자 AS 의 두 인스턴스를 선언함으로써 기본적으로

SELECT e1.EmpID, e1.EmpName, e2.EmpName 
FROM emp e1 LEFT OUTER JOIN emp e2 
ON e1.MngrID = e2.EmpID 

, 당신이 '자기가 가입'하고있는 : SQLFiddle은,하지만 난이 일을하지 않습니다 확인하기 위해 SQL 서버 내 자신의 인스턴스를 실행 테이블 (e1 및 e2)을 만들고 첫 번째 인스턴스의 MngrID를 두 번째 인스턴스의 EmpID에 조인합니다.

+0

감사합니다. – IMMORTAL

1

LEFT JOIN 테이블이 필요합니다. 자체 :

select A.empID, A.empName, b.empName as mgrName 
from emp A left join emp B on A.mngrID = b.empID 

http://sqlfiddle.com/#!3/184dc/8

+0

답장을 보내 주셔서 감사합니다 ....... – IMMORTAL

+0

안녕하세요. 이 솔루션이 도움이 되었기 때문에 기쁩니다. –

0

EMPID, EmpName을 선택 (EMP로부터 EmpName을 선택 WHERE MngrID = amp1.MngrID)는에서 작동하지 않는 몇 가지 이유를 들어 AMP1