2)Cartesian JOIN) --최악인 것
모든 가능한 행들의 조합을 결과로 반환
조인조건이 없거나 잘못 정의된 경우
반드시 필요한 경우가 아니면 사용하지 말것
ANSI의 CROSS JOIN과 같은 JOIN
ex) A 테이블(100행 20열), B테이블(30행 10열)을 카타시안 조인하면
결과는(3000행 30열)
사용예)
SELECT 'CART' AS 테이블명,
COUNT(*) AS 자료수
FROM CART
UNION
SELECT 'BUYPROD', COUNT(*)
FROM BUYPROD
UNION
SELECT 'PROD', COUNT(*)
FROM PROD
SELECT COUNT(*) -- 전체 행의 수
FROM BUYPROD,CART,PROD;
SELECT COUNT(*) --위와 같은 결과로 출력
FROM BUYPROD
CROSS JOIN CART
CROSS JOIN PROD;
3)SELF JOIN)=--자기가 자기랑 조인
사용예) 사원테이블에서 사원번호 120번 사원의 급여보다 더 많은 급여를 받는 사원의 사원번호, 사원명, 부서번호, 부서명, 급여를 조회하시오**
-- 1. 사원번호 120번 사원을 꺼내는 사원테이블 A
-- 2. 그 값보다 더많이 받는 사원을 뽑는 사원테이블 뽑기 C
-- B는 부서명 뽑기
SELECT C.EMPLOYEE_ID AS 사원번호,
C.EMP_NAME AS 사원명,
C.DEPARTMENT_ID AS 부서번호,
B.DEPARTMENT_NAME AS 부서명,
C.SALARY AS 급여
FROM HR.EMP A, HR.DEPT B, HR.EMP C
WHERE A.EMPLOYEE_ID = 120 -- 사원번호가 120번인
AND A.SALARY <= C.SALARY -- 조인 조건(넌이퀴조인): A보다 급여가 많은 C추출
AND C.DEPARTMENT_ID = B.DEPARTMENT_ID -- 조인 조건(이퀴조인): 부서 번호가 같은
ORDER BY 3 5 DESC; --3번 부서번호 순서대로 정렬하되 급여가 많은 순으로 정렬하시오