SQL CROSS JOIN, 카테시안 곱 (Cartesian Product) #2

|

CROSS JOIN

카테시안 곱은 두개의 테이블(or 데이터 집합) 간에 모든 가능한 조합을 생성하는 연산법입니다.
즉 A 테이블의 각 행과 B 테이블의 각 행을 결합하여 결과 테이블을 생성합니다.

카테시안 곱이란

CROSS JOIN(카테시안 곱) 설명

CROSS JOIN 과 카테시안 곱은 같은 개념과 뜻으로 불립니다.
사용법은 다음과 같습니다.

A 테이블

테이블1:
| 컬럼1 |
|-------|
|   A   |
|   B   |

B 테이블

테이블2:
| 컬럼2 |
|-------|
|   1   |
|   2   |

CROSS JOIN 쿼리 실행

SELECT * FROM 테이블1
CROSS JOIN 테이블2;
| 컬럼1 | 컬럼2 |
|-------|-------|
|   A   |   1   |
|   A   |   2   |
|   B   |   1   |
|   B   |   2   |

결과는 위와 같이 나오게 됩니다.

INNER JOIN 및 OUTER JOIN 을 사용한 카티션 곱

카테시안 곱을 표현하는 다른 방법 중 하나는 INNER JOIN 또는 OUTER JOIN을 사용하여 조인 조건을 생략하는 것입니다. 이렇게 하면 두 테이블 간의 모든 가능한 조합이 생성됩니다.

테이블1:
| 컬럼1 |
|-------|
|   A   |
|   B   |

테이블2:
| 컬럼2 |
|-------|
|   1   |
|   2   |

INNER JOIN 쿼리 실행

SELECT *
FROM 테이블1
INNER JOIN 테이블2;
| 컬럼1 | 컬럼2 |
|-------|-------|
|   A   |   1   |
|   A   |   2   |
|   B   |   1   |
|   B   |   2   |

INNER JOIN 외에도 LEFT JOIN, RIGHT JOIN, 또는 FULL OUTER JOIN을 사용하여
다른 유형의 조인을 수행하면 카테시안 곱과 유사한 결과를 얻을 수 있지만 완전히 같지는 않습니다.

테이블1:
| 컬럼1 | 값1 |
|-------|-----|
|   A   |  10 |
|   B   |  20 |

테이블2:
| 컬럼2 | 값2 |
|-------|-----|
|   A   |  30 |
|   C   |  40 |

LEFT JOIN 쿼리 실행

SELECT *
FROM 테이블1
LEFT JOIN 테이블2 ON 테이블1.컬럼1 = 테이블2.컬럼2;
| 컬럼1 | 값1 | 컬럼2 | 값2 |
|-------|-----|-------|-----|
|   A   |  10 |   A   |  30 |
|   B   |  20 | NULL  | NULL |

LEFT JOIN테이블1을 기준으로 하고
테이블2의 일치하는 행을 가져오며, 일치하지 않는 경우에는 NULL 값을 반환합니다.

왜 CROSS JOIN 을 해야할까

이런 유형의 JOIN은 모든 가능한 조합을 검토해야 하는 경우에 유용할 수 있습니다. 하지만 대부분의 실제 상황에서는 더 구체적인 JOIN 조건이 필요하기 때문에, CROSS JOIN은 그다지 자주 사용되지 않습니다.

참조

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다