Left/Right Outer Join 방식 이해

이런 테이블이 있다고 치면...
<Right Outer Join>
[CODE type=oracle8]SELECT * FROM A RIGHT OUTER JOIN B
On
A.TUID = B.TUID;[/CODE]
On
A.TUID = B.TUID;[/CODE]

Right Outer Join
Right Outer Join은 Left에서 Right로 맨 밑의 행에서부터 대입된다.
A Row 1(1, kkk) ----> B Row 5(1, 94, 19) 대입
A Row 1(1, kkk) ----> B Row 4(1, 80, 29) 대입
A Row 1(1, kkk) ----> B Row 1(1, 48, 31) 대입
A Row 1의 tUid랑 b의 tUid랑 같은 값이 이제 없으므로 다음 Row로 간다.
A Row 2(2, bbb) ----> B Row 3(2, 75, 23) 대입
A Row 2(2, bbb) ----> B Row 2(2, 88, 27) 대입
< 중략 >
마지막으로 B Row 6(4, 35, 11)은 일치하는 값이 없지만 출력한다.
A Row 1(1, kkk) ----> B Row 4(1, 80, 29) 대입
A Row 1(1, kkk) ----> B Row 1(1, 48, 31) 대입
A Row 1의 tUid랑 b의 tUid랑 같은 값이 이제 없으므로 다음 Row로 간다.
A Row 2(2, bbb) ----> B Row 3(2, 75, 23) 대입
A Row 2(2, bbb) ----> B Row 2(2, 88, 27) 대입
< 중략 >
마지막으로 B Row 6(4, 35, 11)은 일치하는 값이 없지만 출력한다.
TUID NAME TUID TMAX TMIN
----------- ---- ----------- ----------- -----------
1 kkk 1 94 19
1 kkk 1 80 29
1 kkk 1 48 31
2 bbb 2 75 23
2 bbb 2 88 27
1 jjj 1 94 19
1 jjj 1 80 29
1 jjj 1 48 31
4 35 11
9 rows selected.
----------- ---- ----------- ----------- -----------
1 kkk 1 94 19
1 kkk 1 80 29
1 kkk 1 48 31
2 bbb 2 75 23
2 bbb 2 88 27
1 jjj 1 94 19
1 jjj 1 80 29
1 jjj 1 48 31
4 35 11
9 rows selected.
이 결과 값은 Oracle 9i에서 수행된 값입니다.
<Left Outer Join>
[CODE type=oracle8]SELECT * FROM A Left Outer Join B
On
A.TUID = B.TUID;[/CODE]
On
A.TUID = B.TUID;[/CODE]

Left Outer Join
Left Outer Join이므로 Right에서 Left로 대입된다.
B Row 1(1, 48, 31) --> A Row 4(1, jjj) 대입
B Row 1(1, 48, 31) --> A Row 1(1, kkk) 대입
B Row 2(2, 88, 27) --> A Row 2(2, bbb) 대입
B Row 3(2, 75, 23) --> A Row 2(2, bbb) 대입
B Row 4(1, 80, 29) --> A Row 4(i, jjj) 대입
< 중략 >
마지막 A Row 3(3, ccc)은 일치하는 것이 없으므로 출력
B Row 1(1, 48, 31) --> A Row 4(1, jjj) 대입
B Row 1(1, 48, 31) --> A Row 1(1, kkk) 대입
B Row 2(2, 88, 27) --> A Row 2(2, bbb) 대입
B Row 3(2, 75, 23) --> A Row 2(2, bbb) 대입
B Row 4(1, 80, 29) --> A Row 4(i, jjj) 대입
< 중략 >
마지막 A Row 3(3, ccc)은 일치하는 것이 없으므로 출력
TUID NAME TUID TMAX TMIN
----------- ---- ----------- ----------- -----------
1 jjj 1 48 31
1 kkk 1 48 31
2 bbb 2 88 27
2 bbb 2 75 23
1 jjj 1 80 29
1 kkk 1 80 29
1 jjj 1 94 19
1 kkk 1 94 19
3 ccc
9 rows selected.
----------- ---- ----------- ----------- -----------
1 jjj 1 48 31
1 kkk 1 48 31
2 bbb 2 88 27
2 bbb 2 75 23
1 jjj 1 80 29
1 kkk 1 80 29
1 jjj 1 94 19
1 kkk 1 94 19
3 ccc
9 rows selected.
이 결과 값은 Oracle 9i에서 수행된 값입니다.