2014-10-06 4 views
2

SQL Server에서 OUTER JOIN 함수를 사용하는 방법을 배우려고합니다. 따라서 select 쿼리는 두 테이블의 모든 값을 반환합니다. 심지어 일치하지 않는 테이블도 있습니다.SQL : SQL Server 2012에서 외부 조인 사용

SELECT boys.name, boys.city, girls.name, girls.city 
    FROM boys, girls 
    RIGHT OUTER JOIN boys as men ON boys.city=girls.city; 

나는를 반환하기 위해 노력하고있어 : 여기

Boys: 

Name City 
Andrew Cape Town 
Mike Paphos 
Simon Amsterdam 

Girls: 

Name City 
Georgia Paphos 
Megan London 
Eva  Amsterdam 
Stephi Cape Town 

내가 작성한 쿼리입니다 : 여기

내가 (남자와 여자) 사용하고 두 개의 샘플 테이블입니다

boys.Name  boys.City  girls.name  girls.city  
Andrew  Cape Town  Stephi   Cape Town 
Mike   Paphos   Georgia   Paphos 
Simon   Amsterdam  Eva    Amsterdam 
NULL   NULL    Megan    London 

정상적인 내부 결합은 일치하는 소년 도시가 없기 때문에 마지막 행을 무시합니다.

아무도 도와 줄 수 없습니까?

감사합니다.

마이크

+1

은'소년 FROM 구문에 가입 girls' 이전 구문 (용어가 나를 탈출, ATM) 및 암시 적 내부 당신이있어 이유의 일부입니다 가입 사용합니다 당신이 원하는 결과를 보지 못했습니다. –

+1

왜 각 지구마다 성별에 대한 표가 있습니까? – Kermit

+0

내 문제를 설명하기위한 그 말도 안되는 표 – Mike

답변

4

당신은 FULL OUTER을 찾고 그 대신 RIGHT OUTER의 두 가지를 간다 가입 가입;

SELECT boys.name boys_name, boys.city boys_city, 
     girls.name girls_name, girls.city girls_city 
FROM boys 
FULL OUTER JOIN girls 
    ON boys.city=girls.city 

An SQLfiddle to test with.

기존 쿼리는 이전 조인 구문으로 한 번, 오른쪽 조인으로 한 번 두 번 남학생을 합류합니다. 전체 외부 조인을 사용하면 각 테이블을 한 번만 포함시켜야합니다.

0

두 테이블에서 FULL OUTER JOIN을 사용할 수 있습니다.

자세한 내용은 here을 참조하십시오. 예를 들어

:

SELECT boys.name, boys.city, girls.name, girls.city 
    FROM girls 
    FULL OUTER JOIN boys ON boys.city=girls.city;