Inner join & Outter join

테이블 작업을 하다 보면,
여러 테이블의 데이터를 조인해서 가져오도록 설계를 많이 합니다.

그러다 보면 데이터가 기본 1:1 혹은 1:N개로 존재를 해야 하는데,
그렇지 않을 경우 즉, 1:0으로 된 데이터를 가져와야 할 경우도 있습니다.

보통의 테이블 조인을 INNER JOIN이라 말을 하고,
저런 데이터가 없는 경우에도 가져와야 하는 JOIN을 OUTER JOIN 이라고 합니다.

아래와 같은 테이블이 있습니다.

select * from table1;

field1         field2       field3

200901  1   40

200901  2   40

200901  3   40

200901  4   40

200901  5   40

200901  6   40

200901  7   40

200901  8   40

 

select * from table2;

field1         field2       field3

200901  1   50

200901  2   60

200901  3   70

200901  4   80


INNER JION의 경우, 평소에 하던 대로 하면 됩니다.
SELECT a.*, b.*
FROM table1 a, table2 b
WHERE a.field1 = a.field1
AND a.field2 = b.field2
굳이 다른 방식으로 이해하려 하지 않아도 됩니다.

위 테이블 두개를 묶어서 관련된 데이터 b.field3값도 확인하고 싶습니다. 이때, 없는 레코드의 경우도 보여주고 싶을 때는 OUTER JOIN을 사용하게 됩니다.

OUTER JOIN의 경우는 좀 복잡합니다. 물론 INNER JOIN 의 정확한 것을 배워도 되지만,
일단 FM은 아래와 같습니다.
SELECT a.*, b.field3
FROM table1 a OUTER JOIN table2 b ON a.field2 = b.field2
WHERE a.field1 = '200901'
JOIN 부분은 없어도 NULL 값으로 연결을 해주고,
WHERE 이하 구문은 INNER JOIN 형태로 연결을 해줍니다.

현재도 *= 문법을 지원을 하고 있으나,
몇가지 버그 등의 문제로 추천하는 문법은 아닙니다.


퍼온곳 : 초보 관리자/DB 2009/02/02 19:22 by 비트센스

by darkmirr | 2009/09/29 14:33 | DB | 트랙백 | 덧글(0)

트랙백 주소 : http://darkmirr.egloos.com/tb/1535048
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶