[LEFT,RIGHT,FULL] OUTER JOIN은 각각 OUTER JOIN을 기점으로 왼쪽 오른쪽, 두가지 테이블 모두의 데이터 행중에서 ON이후에 오는 조건에 부합하지 않아도 일단은 출력행에 포함시키겠다는 의미이다.

 

다음을 보자.. 아참 그리고 편의상 이 테스트에 사용한 테스트용 테이블을 다시 첨부한다. 

 

 

아래 쿼리는 usrTable.usrID와 buyTable.usrID가 같은 데이터 행을 결합하여 새로운 행을 만들어 출력하되 LEFT OUTER JOIN 명령어를 기준으로 왼쪽에 있는 테이블 usrTable의 데이터 행은 무조건 다 출력하겠다는 의미이다. (붙일 다른 테이블의 데이터 행이 없으니까 그 열을 null로 열을 채워서라도..) 

 

따라서 아래의 출력결과와 같듯이 주문하지 않은 김언아, 손니은도 같이 출력이 되었다.

물론 나머지 컬럼은 NULL인채로..

 

그리고 한가지 더 유념해서 볼 것은 JOIN의 결과로 탄생한 출력 데이터 행의 갯수가 두 테이블의 조건을 만족하는 데이터 행 이 각각 a,b 라고 했을 때 max(a,b)만큼 생성된다는 것이다. 어찌보면 당연한 이야기 이지만 처음엔 좀 의아한 부분이라 적어 놓고 넘어간다.  

 

 

OUTER JOIN또한 INNER JOIN과 마찬가지로 복수개의 조건이 결합되어 사용될 수 있는데, 기본적인 방식은 INNER JOIN과 동일하다. 방법이 동일하니까 굳이 여기에 다시 적지는 않겠고, 대신에 회원 가입은 해놓고 주문은 안한 사람들의 명단을 뽑는 것으로 대신 예를 보이겠다. 여기서는 WHERE prdTable.prdID is NULL이라는 새로운 구문이 들어가 있는데 NULL인 칼럼 값을 가진 데이터 행을 찾는 구문이다.

 

김언아와 손니은이 주문을 안했다.

 

 

Posted by 굿쟌
,