Menu
Coddy logo textTech

Self join

Coddy SQL 여정의 기초 섹션에 포함된 레슨 — 72개 중 46번째.

셀프 조인(Self-join)은 다른 유형의 조인입니다. 지금까지는 여러 테이블 간의 조인에 대해 이야기했지만, 셀프 조인은 동일한 테이블에 조인됩니다. 전형적인 예로는 employees 테이블이 있습니다.

employee_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

최고 관리자를 제외한 모든 직원은 관리자가 있으며, 모든 관리자 또한 직원입니다.

문제: 각 직원에 대해 관리자의 이름을 알고 싶습니다.

SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_id

우리는 동일한 테이블을 조인하는데, 한 번은 e1으로 부르고 다른 한 번은 e2라고 부릅니다. 조인은 employee_id 필드와 manager_id 필드 사이에서 이루어집니다.

결과:

employee_idemployee_namemanager_name
1민케(Minke)테무르(Temur)
2테무르(Temur)타티아나(Tatjana)
3타티아나(Tatjana)마리넬라(Marinela)
challenge icon

챌린지

중급

사용 가능한 테이블 및 컬럼:

  • <strong>friends</strong>: <strong>id</strong>, <strong>name</strong>, <strong>friend_id</strong>

서로 친구인 친구 쌍을 찾으세요 (상호 친구 관계는 A의 friend_id가 B를 가리키고 B의 friend_id가 A를 가리킬 때 성립합니다). 두 친구의 이름을 한 행에 표시하세요. 컬럼 이름을 friend1friend2로 지정하세요.

참고: 중복된 쌍을 포함하지 않도록 WHERE 절에 friend1.id < friend2.id 조건을 포함하세요. 

치트 시트

셀프 조인(Self-join)을 사용하면 테이블 별칭(alias)을 사용하여 테이블을 자기 자신과 조인할 수 있습니다. 이는 동일한 테이블 내의 행을 비교하거나 동일한 테이블의 레코드 간에 관계를 설정해야 할 때 유용합니다.

기본적인 셀프 조인 구문:

SELECT columns
FROM table_name AS alias1
JOIN table_name AS alias2 ON alias1.column = alias2.column

직원과 관리자를 사용한 예시:

SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_id

주요 포인트:

  • 동일한 테이블에 대해 서로 다른 별칭(예: e1, e2)을 사용합니다.
  • 조인 조건은 별칭 간의 관련 필드를 연결합니다.
  • 직원-관리자 관계와 같은 계층적 데이터에 유용합니다.

직접 해보기

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨