SQL과 데이터베이스 - 조인과 집계 데이터 : CROSS JOIN


CROSS JOIN

이 학습은 패스트캠퍼스의 올인원 패키지 : 모두를 위한 SQL/DB 강의를 듣고 복습하는 내용입니다.

image

두개의 테이블의 CATESIAN PRODUCT 연산의 결과를 출력한다. 데이터 복제에 많이 쓰이는 기법이다. (CATESIAN PRODUCT는 곱집합)

- 참고 : CATESIAN PRODUCT


CROSS 조인 실습

● 실습 준비

: CROSS_T1, CROSS_T2 테이블 만들기

CREATE TABLE CROSS_T1
(
  LABEL CHAR(1) PRIMARY KEY
);

CREATE TABLE CROSS_T2 
(
  SCORE INT PRIMARY KEY
);


INSERT INTO CROSS_T1 (LABEL)
VALUES
('A'),
('B');

COMMIT;

INSERT INTO CROSS_T2 (SCORE)
VALUES
(1),
(2),
(3);

COMMIT;
SELECT * FROM CROSS_T1; 

image

SELECT * FROM CROSS_T2;

image


● 기본 실습

SELECT
      *
 FROM CROSS_T1
CROSS JOIN 
      CROSS_T2
ORDER BY LABEL       
;

image

-> CROSS_T1과 CROSS_T2를 CROSS 조인할 결과 출력

image


심화 실습

● 예시1

: 아래 3개의 SQL문은 같은 위의 SQL문과 같은 결과이다.

SELECT
	  *
  FROM
	  CROSS_T1,
	  CROSS_T2
ORDER BY LABEL;

-----------------------------------

SELECT
	  *
  FROM
	  CROSS_T1
INNER JOIN CROSS_T2 
   ON CROSS_T2 = CROSS_T2
ORDER BY LABEL;

-----------------------------------

SELECT
	  *
  FROM
	  CROSS_T1
INNER JOIN CROSS_T2 
   ON CROSS_T1 = CROSS_T1
ORDER BY LABEL;

image

-> SQL문의 목적이 집합을 출력하는 것이다. 정보(결과 집합)가 같다면 SQL문 자체는 다르더라도 동일한 SQL문이라고 볼 수 있다.


● 예시2

: 아직 배우지 않은 SQL문 (이렇게 쓴다. 예시)

SELECT LABEL, 
      CASE WHEN LABEL = 'A' THEN sum(score)  
           WHEN LABEL = 'B' THEN sum(score) * -1
           ELSE 0 
           END AS calc
 FROM CROSS_T1
CROSS JOIN 
      CROSS_T2
GROUP BY LABEL      
ORDER BY LABEL       
;

image

-> 이렇게 원하는 결과를 SQL문으로 출력할 수 있어야 한다!


© 2021. All rights reserved.

----------Powered by Hydejack----------

kyusang Hwang