2014-02-21 5 views
0
TableName:Emp 
EmpId EmpName EmpAddressId 
1  Ram   100 
2  Ravi    
3  Raj   102 
4  Kiran   
5  Bujji  101 


TableName:Address 
AddressId Address 
101    India 
102    Uk 
103    US 


select E.*,A.Address from EMP E inner join Address A 
on E.EmpId=2 and E.EmpAddressId='' or E.EmpAddressId=A.AddressId 


out put should display as for EmpId:2 
------------------------------ 
EmpId EmpName EmpAddressId Address 
2  Ravi  

for EmpId:3 
------------ 
EmpId EmpName EmpAddressId Address 
3  Raj  102   Uk 

직원 2의 경우 EmpAddressId는 없지만 여기에서는 null 값 또는 빈 값으로 표시해야합니다. 누구든 도와 드릴 수 있습니다.내부 조인 빈 값

답변

2

INNER JOINLEFT JOIN (또는 LEFT OUTER JOIN)으로 바꿉니다. 일치하는 항목이없는 경우 Address 표의 모든 열에 대해 NULL이 표시됩니다. 또한, 간단한 버전으로 조인 조건을 대체 할 수있다 : 외부에

select E.EmpId, E.EmpName, E.EmpAddressId, A.Address 
from EMP E left join Address A 
on E.EmpAddressId=A.AddressId 
where E.EmpId=2 

더는 MSDN에 조인

.

+0

가입 왼쪽으로 사용합니다. 입력 매개 변수로 EmpId를 의미합니다. – Ram

+0

아아아, 나는 그것을 다시 추가했다. – Szymon

0

내부 조인은 조인 테이블 중 하나가 null 인 경우 null을 반환합니다. 모든 테이블에 값이 있으면 내부 조인을 사용하고 그렇지 않으면 왼쪽 조인을 사용합니다. 그것은 적어도 당신이 조인 된 테이블 값을 얻을 수 있도록합니다. 이를 위해

, 당신은 내가 모든 직원에 대한 개별 직원을 필요가 없습니다 여기

select e.EmpId, e.EmpName, e.EmpAddressId, a.Address 

from EMP e left join Address a 

on e.EmpAddressId=a.AddressId 

where e.EmpId=2