2011-01-10 4 views
3

내 X 테이블에는 시설 이름 및 제조업체 이름이 있지만 facilityID 및 manufacturerID로 표시해야합니다.조인 결합

나는 두을 표시 할 조인 썼다 :

첫 번째 dislays 시설 ID :

select T1.facilityID, t2.* 
from lkuFacility t1 right join X t2 on t1.facilityName = t2.facility 
and t1.siteCode = t2.siteID 
order by siteid 

두 번째 디스플레이 제조 업체 ID :

select T1.manufacturerID, t2.* 
from lkuManufacturer t1 right join X t2 on t1.manufacturerName = t2.manufacturer 
order by manufacturerid 

내가에 넣어 수있는 방법 하나의 쿼리를 통해 하나의 결과 화면에 시설 ID와 제조업체 ID를 모두 표시 할 수 있습니까?

답변

6

,이 시도 :

SELECT f.facilityID, m.manufacturerID, X.* 
FROM X 
LEFT JOIN lkuFacility AS f 
ON f.facilityname = X.facility AND f.siteCode = X.siteID 
LEFT JOIN lkiManufacturer AS m 
ON m.manufacturerName = X.manufacturer 

편집 :
사용자가 설정 한 같은 결과로 가입하지만, 나란히되지하려는 경우 (같은 이상), 당신은 너무처럼 UNION 연산자를 사용 할 수 있어야한다 :

select T1.facilityID, t2.* 
from lkuFacility t1 right join X t2 on t1.facilityName = t2.facility 
and t1.siteCode = t2.siteID 
UNION ALL 
select T1.manufacturerID, t2.* 
from lkuManufacturer t1 right join X t2 on t1.manufacturerName = t2.manufacturer 
order by manufacturerid 
+0

감사합니다. 첫 번째 솔루션은 훌륭하게 작동했습니다. –

+0

@xrum : 듣기 좋았습니다. 두 번째에 대한 –

+0

, 내가 받고있어 : 'UNION'키워드 근처의 구문이 잘못되었습니다. –

0

UNION ALL 연산자를 사용하여 두 쿼리를 연결할 수 있습니다. 당신이 그 (것)들을 테이블 X에 따라 연결하려는 경우

+0

쿼리 집합은 상호 배타적이므로 UNION이 아닌 경우 UNION을 사용해야합니다. – HLGEM

+0

예! 그건 쓰는거야. 감사. – joksnet

0

별도의 라인을 신경 쓰지 않는 경우 다음 UNION 모든 문을. 같은 줄에 둘 다 원한다면 X 테이블에 두 개의 조인을해야 할 수도 있습니다.

+0

두 열이 분리되어 있어야합니다. –

+0

그런 다음 @ Drackir의 솔루션을 사용하십시오. – HLGEM