Menu
Coddy logo textTech

셀프 조인

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

Self-join은 different 유형의 조인입니다. 지금까지는 여러 table 조인에 대해 이야기했지만, self-join은 동일한 table에 조인됩니다. 전형적인 예로 employees table을 들 수 있습니다.

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

같은 table을 조인하지만, 한 번은 e1이라고 부르고 두 번째는 e2라고 부릅니다. 조인은 employee_id 필드와 manager_id 필드 사이에서 이루어집니다.

결과:

employee_idemployee_namemanager_name
1MinkeTemur
2TemurTatjana
3TatjanaMarinela
challenge icon

챌린지

중급

사용 가능한 테이블 및 열:

  • friends: id, name, friend_id

서로 친구인 친구 쌍을 찾으세요(사람 A의 friend_id가 사람 B를 가리키고 AND 사람 B의 friend_id가 사람 A를 가리킬 때 상호 우정이 존재합니다). 두 친구의 이름을 하나의 행에 표시하세요. 열 이름을 friend1friend2로 지정하세요.

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

직접 해보기

-- 테이블을 자기 자신과 조인하여 한 행에 서로 다른 두 사람을 표시할 수 있게 함
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- 서로 가리키는 쌍만 유지
WHERE ____ AND f1.id < f2.id;
quiz icon실력 점검

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

기초의 모든 레슨

직접 연습해 보세요: SQL 플레이그라운드