셀프 조인 개념에 대해서 이야기해봅시다.
셀프 조인 개념에 대해 알기
셀프 조인(Self Join)은 데이터 베이스(Data Base)의 SQL(Structured Query Language)에서 1개의 테이블 내 조인(Join)을 통해 가상으로 2개의 테이블 처럼 만들어서 데이터를 활용하는 방법입니다.
일반적으로 조인(Join) 기능은 2개 이상의 테이블들을 연결하고 활용하여 필요한 데이터를 조회하는 방법입니다. 하지만 셀프 조인의 경우 2개 이상의 테이블이 아니라 1개의 테이블을 가지고 조인한 결과를 사용하는 것입니다.
셀프 조인에서는 1개의 테이블에 가상으로 여러 별칭들을 부여하여 2개의 테이블인 것처럼 간주한 다음 SQL 조인(JOIN)을 하는 것입니다. 1개의 컬럼 안에 섞여 있는 여러 레코드들을 다른 컬럼을 활용하여 위계 관계(상하 관계)나 관계를 알 수 있는 모습으로 데이터를 조회할 수 있게 됩니다.
셀프 조인 개념에 대한 설명
셀프 조인(Self Join)은 데이터 베이스(Data Base) 내 SQL(Structured Query Language) 사용 기법 중 1개의 테이블에서 자기 자신과 자기 자신을 조인(JOIN) 시키는 방법입니다.
일반적인 조인은 2개 이상의 테이블을 엮어서 원하는 데이터를 추출하는 것입니다. 하지만 셀프 조인에서는 같은 테이블을 엮어서 원하는 데이터를 추출하는 것입니다.
[일반 조인과 셀프 조인 비교]
구분 | 내용 |
일반 조인 (JOIN) | 2개 이상의 테이블을 엮어서 원하는 데이터를 추출 |
셀프 조인 (SELF JOIN) | 같은 테이블(1개의 테이블)을 엮어서 원하는 데이터를 추출 |
셀프 조인에서는 FROM 절에 같은 테이블이 2번 이상 등장합니다. 같은 테이블이 2번 이상 들어가야 하기 때문에 혼란을 방지하기 위해서 별칭(ALIAS)를 반드시 표기해서 사용해야 합니다.
[셀프 조인의 사용 예시]
SELECT A.컬럼1,
A.컬럼2,
B.컬럼1,
B.컬럼2
FROM 테이블1 A,
테이블1 B
WHERE 1=1
AND A.컬럼1 = B.컬럼2
AND A.컬럼2 ='a'
셀프 조인은 카테고리가 대, 중, 소의 3가지 구조를 가지고 있을 때 사용할 수 있습니다. 셀프 조인을 통해 대분류, 중분류, 소분류를 함께 출력할 수 있게 됩니다. 카테고리의 Depth가 깊어질 수록 셀프 조인이 반복될 수 있는데 계층 쿼리를 사용하면 좀 더 간단한 쿼리를 작성할 수 있습니다.
셀프 조인은 같은 테이블 안에서의 데이터를 연결합니다. 하나의 테이블이 자기 자신을 대상으로 조인하는 개념입니다. 셀프 조인은 필요에 따라 한 행에 있는 값을 같은 행에 있는 다른 값과 비교해야 하는 상황에서 사용될 수 있습니다.
셀프 조인에서 가장 중요한 핵심 포인트는 테이블에 반드시 별칭을 붙여 줘야 한다는 점입니다.
셀프 조인을 사용하는 경우는 위계성 데이터를 다룰 경우, 순차성 데이터를 다루는 경우, 1개의 테이블 안에 관계성이 명시되어야 할 데이터가 여러 개 존재하는 경우 사용됩니다.
[셀프 조인이 사용되는 경우]
구분 | 내용 |
1 | 위계성 데이터(Hierarchical Data)를 다룰 경우 |
2 | 순차성 데이터(Sequential Data)를 다루는 경우 |
3 | 1개의 테이블 안에 관계성이 명시되어야 할 데이터가 여러 개 존재하는 경우 |
셀프 조인은 동일한 테이블 사이의 조인입니다. FROM 절에 동일한 테이블이 2번 이상 표현됩니다. 같은 테이블 간 연결하는 것이기 때문에 반드시 별칭(ALIAS)를 사용해야 합니다.