티스토리 툴바

블로그 이미지
열심히 배우고자 하는 개발자들의 팀 블로그 입니다. 나머지 동료들을 모집 합니다. (루피, 조로, 우솝은 있습니다.) JMSOFT

카테고리

분류 전체보기 (16)
ASP.NET (3)
C# (1)
Silverlight (0)
WPF (0)
WCF (0)
C/C++ (1)
MFC (0)
SQLServer2008 (2)
SQL (6)
Transact-SQL (2)
WindowsServer2008 (1)
Total995
Today0
Yesterday1

OUTER JOIN을 그대로 번역 하면 "외부 조인" 정도 인데, INNER JOIN 과 마찬가지로 "외부" 와 "내부" 라는 뜻을 알기가 참 힘들다.

INNER JOIN은 교집합을 의미 한다고 했다. 그럼 OUTER JOIN은 집합의 개념을 생각 했을 때 무엇을 의미 하는지 알아 보자.

OUTER JOIN은 집합연산에서 교집합, 합집합, 차집합 등의 연산이다라고 표현 하기가 힘들지만 한가지 확실한 것은 OUTER JOIN이 집합 개념에서 차집합을 의미하는 것이 아니라는 것은 분명 하다.

차집합은 A - B 이다. A - B 는 A 집합에서 B 집합에 있는 요소들을 모두 뺀 나머지 이고, 이는 A - (A ∩ B)라고 표현 할 수도 있다.

하지만 OUTER JOIN은 오히려 INNER JOIN을 조금 더 확장한 연산이라고 생각하는 것이 좋다. 교집합 (A ∩ B) 이외의 요소들을 결과 집합에 포함하고자 한다면, 예를 들어 A_Table 과 B_Table을 INNER JOIN한 결과에서 A_Table이나 B_Table 또는 두 Table 모두, 연산에서 빠진 결과들을 결과 집합에 붙이고자 할때 OUTER JOIN을 사용 한다.

OUTER JOIN에는 LEFT, RIGHT, FULL OUTER JOIN 등 3가지 형식이 있고 그림으로 표현 하면 다음과 같다.

LEFT OUTER JOIN




RIGHT OUTER JOIN



이상으로 LEFT OUTER JOIN 과 RIGHT OUTER JOIN 의 예를 살펴 보면 다음과 같다.


CREATE TABLE SET_A(ID INT)
GO
CREATE TABLE SET_B(ID INT)
GO
BEGIN
INSERT SET_A VALUES(1)
INSERT SET_A VALUES(2)
INSERT SET_A VALUES(3)
INSERT SET_B VALUES(2)
INSERT SET_B VALUES(3)
INSERT SET_B VALUES(4)
END

-- 1. LEFT OUTER JOIN
SELECT A.ID AS AID, B.ID AS BID
FROM SET_A A LEFT OUTER JOIN SET_B B
ON A.ID = B.ID

-- 2. RIGHT OUTER JOIN
SELECT A.ID AS AID, B.ID AS BID
FROM SET_A A RIGHT OUTER JOIN SET_B B
ON A.ID = B.ID


각각의 결과는 다음과 같다.

-- 1. LEFT OUTER JOIN


결과를 보면 SET_B TABLE(집합)에 포함되어 있지 않은 요소 1 이 결과 집합에 포함 되어 있는 것을 볼 수 있다.



-- 2. RIGHT OUTER JOIN


결과를 보면 SET_A TABLE(집합)에 포함되어 있지 않은 요소 4 가 결과 집합에 포함 되어 있는 것을 볼 수 있다.


출처 : SQL SERVER 2005 완벽가이드, 영진닷컴
저작자 표시 비영리 변경 금지
Posted by JMSOFT

최근에 받은 트랙백

글 보관함