Develop/DATABASE

오라클)조인(join) - 조인 조건(카티션 곱, 등가 조인, 비등가 조인)

걸어다니는 종합병원 2022. 12. 28. 23:16
반응형

조인(join)

하나의 쿼리로 다수의 테이블을 조회한다.

조인은 열 값으로 테이블 행을 연결한다.

하나의 행은 하나 이상의 행과 연결될 수 있다.

일반적으로 PK(기본 키)와 FK(외래 키)로 조인하는 것이 일반적이지만, 관계를 가지지 않는 테이블을 조인하는것도 가능.


dept 테이블에서 deptno는 PK(기본 키)

emp 테이블에 deptno는 FK(외래 키)

SELECT a.deptno, a.dname, b.empno, b.ename
	FROM dept a, emp b
    WHERE b.deptno = a.deptno
    ORDER BY 1, 3;


조인 조건

조인할 두 테이블의 열이 기술된 조건.

열과 열을 평가하며 TRUE인 행을 반환

 

SAMPLE DATA

DROP TABLE t1 PURGE;
DROP TABLE t2 PURGE;
DROP TABLE t3 PURGE;

CREATE TABLE t1(c1 NUMBER, CONSTRAINT t1_pk PRIMARY KEY(c1));
CREATE TABLE t2(c1 NUMBER, CONSTRAINT t2_pk PRIMARY KEY(c1));
CREATE TABLE t3(c1 NUMBER, CONSTRAINT t3_pk PRIMARY KEY(c1));

INSERT INTO t1 VALUES(1);
INSERT INTO t1 VALUES(2);
INSERT INTO t1 VALUES(3);
INSERT INTO t2 VALUES(1);
INSERT INTO t2 VALUES(2);
INSERT INTO t3 VALUES(1);
INSERT INTO t3 VALUES(3);

카티션 곱

조인 조건이 없는 조인

SELECT a.c1 AS a, b.c1 AS b FROM t1 a, t2 b ORDER BY 1, 2;

카티션 곱이 발생하면 조인되는 테이블 행의 곱 만큼 행이 반환된다.

t1 테이블 행 3개 *  t2 테이블 행 2개 = 총 6개의 행 반환


등가 조인 

조인 조건이 모두 등호(=)인 조인이며, 값이 동일한 경우에만 행을 반환

SELECT a.c1 AS a, b.c1 AS b
	FROM t1 a, t2 b
    WHERE b.c1 = a.c1
    ORDER BY 1, 2;


SELECT a.c1 AS a, b.c1 AS b, b.c1 AS c
	FROM t1 a, t2 b, t3 c
    WHERE b.c1 = a.c1
    AND	  c.c1 = b.c1
    ORDER BY 1, 2;


비등가 조인

등호 외의 다른 조인 조건이 있는 조인

 SELECT a.c1 AS a, b.c1 AS b
	FROM t1 a, t2 b
    WHERE b.c1 >= a.c1
    ORDER BY 1, 2;

반응형