JOIN ( OUTER JOIN )

이태규·2022년 3월 22일
0

SQL

목록 보기
12/26

OUTER JOIN

INNER JOIN이 JOIN 조건에 부합하는 행만 JOIN이 발생하는 것이라면,
OUTER JOIN은 조건에 부합하지 않는 행까지도 포함시켜 결합하는 것을 의미한다.

SELECT < 목록>
FROM <첫번째 테이블 (LEFT 테이블)>
    <LEFT | RIGHT | FULL> OUTER JOIN <두번째 테이블 (RIGHT 테이블)>
                          ON <조인될 조건>
[WHERE 검색 조건]

LEFT OUTER JOIN

LEFT OUTER JOIN은 왼쪽 테이블의 것은 조건에 부합하지 않더라도 모두 결합되어야 한다는 의미이다.

( 왼쪽 전체 + 오른쪽 일치하는 것만)

SELECT * FROM 테이블1, 테이블2 WHERE 테이블1.컬럼=테이블2.컬럼(+);
SELECT 
    *
FROM
    ITEM1, ORDER1
WHERE
    ITEM1.ITEMNO=ORDER1.ORDITEM(+);

ANSI SQL
--SELECT * FROM 테이블1 LEFT OUTER JOIN 테이블2
--ON ITEM1.ITEMNO = ORDER1.ORDITEM;


SELECT 
    *
FROM
    ITEM1 LEFT OUTER JOIN ORDER1
ON
    ITEM1.ITEMNO=ORDER1.ORDITEM(+);

ANSI SQL로 바뀌는 과정

FROM 테이블1, 테이블2  > FROM 테이블1 LEFT OUTER JOIN 테이블2
WHERE > ON

RIGTH OUTER JOIN

RIGHT OUTER JOIN은 오른쪽 테이블의 것은 조건에 부합하지 않더라도 모두 결합되어야 한다는 의미이다.

SELECT 
    * 
FROM 
    ORDER1, MEMBER1 
WHERE 
    ORDER1.ORDID(+)=MEMBER1.USERID;
SELECT 
	* 
FROM 
	ORDER1 RIGHT OUTER JOIN MEMBER1 
ON 
	ORDER1.ORDID(+)=MEMBER1.USERID;

full outer join

전체 조인 또는 전체 외부 조인이라고 한다.
FULL OUTER JOIN은 LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합친 것이라고 생각하면 된다.

즉, 한쪽을 기준으로 조건과 일치하지 않는 것을 출력하는 것이 아니라,
양쪽 모두에 조건이 일치하지 않는 것들까지 모두 결합하는 개념이다.

따라서, 테이블들의 모든 행이 조건에 관계없이 결합된다.

SELECT * FROM ORDER1 FULL OUTER JOIN MEMBER1
ON ORDER1.ORDID=MEMBER1.USERID;

ansi만 된다.

조건 넣기


SELECT
    ITEM1.ITEMNAME, ITEM1.ITEMPRICE, ORDER1.*
FROM
    ITEM1, ORDER1
WHERE
    ITEM1.ITEMNO=ORDER1.ORDITEM AND ITEM1.ITEMPRICE >=1000;
    

뒤에 ORDER BY 나 덧붙여도 된다.

profile
한 걸음씩 나아가자

0개의 댓글