-
Oracle - CROSS JOIN / NON_EQUI JOIN / SELF JOIN데이터베이스/Oracle 2020. 11. 13. 15:47728x90반응형
CROSS JOIN / NON_EQUI JOIN / SELF JOIN
CROSS JOIN / NON_EQUI JOIN / SELF JOIN를 알아보자.
CROSS JOIN
CROSS JOIN이란 교차 조인, 혹은 카테시안 곱(Cartesian Product)이라고도 하며 조인되는 테이블의 각 행들이
모두 매핑된 데이터가 검색되는 조인 방법이다.
검색되는 데이터 수는 '행의 컬럼 수 * 또 다른 행의 컬럼 수' 로 나타난다.
[ CORSS JOIN 예시 ]
SELECT EMP_NAME, DEPT_TITLE FROM EMPLOYEE CROSS JOIN DEPARTMENT;
NON_EQUI JOIN
NON_EQUI JOIN이란 비등가 조인이라고도 불리며 '=' (등호)를 사용하지 않는 조인문으로 지정한 컬럼 값이 일치하는 경우가 아닌 값의 범위에 포함되는 행들을 연결하는 방식이다.
[ NON_EQUI JOIN 예시 ]
SELECT EMP_NAME, SALARY, E.SAL_LEVEL FROM EMPLOYEE E JOIN SAL_GRADE S ON (SALARY BETWEEN MIN_SAL AND MAX_SAL);
SELF JOIN
SELF JOIN이란 두 개 이상의 서로 다른 테이블을 연결하는 것이 아닌 같은 테이블을 조인하는 것이다.
[ SELF JOIN 예시 ]
SELECT E.EMP_ID, E.EMP_NAME 사원이름, E.DEPT_CODE, E.MANAGER_ID, M.EMP_NAME 관리자이름 FROM EMPLOYEE E, EMPLOYEE M WHERE E.MANAGER_ID = M.EMP_ID;
다중 JOIN
다중 JOIN이란 하나 이상의 테이블에서 데이터를 조회하기 위해 사용하고
수행 결과는 하나의 Result Set으로 나온다.
다중 조인할때는 조인 순서가 중요하다!!
[ 다중 JOIN 예시 ]
SELECT EMP_ID, EMP_NAME, DEPT_CODE, DEPT_TITLE, LOCAL_NAME FROM EMPLOYEE JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID) JOIN LOCATION ON (LOCATION_ID = LOCAL_CODE);
* 조인 순서를 지키지 않았을 때
SELECT EMP_ID, EMP_NAME, DEPT_CODE, DEPT_TITLE, LOCAL_NAME FROM EMPLOYEE JOIN LOCATION ON (LOCATION_ID = LOCAL_CODE) JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID); -- 순서가 잘못되어 에러가 나타난다.
EMPLOYEE 테이블에 LOCATION_ID가 없기 때문에
EMPLOYEE 테이블과 LOCAIOTN의 테이블의 등가조인이 성립되지 않는다.
728x90반응형'데이터베이스 > Oracle' 카테고리의 다른 글
Oracle - 서브쿼리(SUBQUERY) - Part2 (0) 2020.11.16 Oracle - 서브쿼리(SUBQUERY) - Part 1 (0) 2020.11.16 Oracle - JOIN (0) 2020.11.12 Oracle - GROUP BY 의 ROLLUP과 CUBE (0) 2020.11.11 Oracle - ORDER BY / GROUP BY / HAVING (0) 2020.11.11