MySQL

SELF JOIN

ryeonng 2024. 6. 12. 11:28

SELF JOIN

하나의 테이블 내에서 자기 자신을 조인 하는 것을 의미.
이는 동일한 테이블에서 서로 다른 행을 비교하고 조작하는 데 사용된다.
Self join을 사용하면 동일한 열을 가진 두 개의 서로 다른 인스턴스 간의 관계를 파악하거나 계층적인 구조를 나타낼 때 유용하다.
예를 들어, 조직 구조에서 각 직원이 직속 상급자의 정보를 확인해야 할 때, self join을 사용할 수 있다.
각 직원은 같은 테이블에 저장되어 있지만, 상급자와 직속 부하 직원 간의 관계를 파악하기 위해 자기 자신과의 조인을 수행한다.

 

 

Column Name Data Type Description
employee_id INT 직원의 식별자
employee_name VARCHAR 직원의 이름
employee_phone VARCHAR 직원의 연락처
manager_id INT 해당 직원의 상급자의 직원 식별자. 만약 상급자가 없으면 NULL

 

-- 테이블 생성
create table employees(
	employee_id int,
    employee_name varchar(255),
    employee_phone varchar(20),
    manager_id int,
    primary key(employee_id)
); 

select * from employees;

insert into employees 
	values(1, '홍길동', '010-1111-1111', null),
		(2, '이순신', '010-2222-2222', 1),
		(3, '유관순', '010-3333-3333', 1),
		(4, '야스오', '010-4444-4444', 2);
        
-- 해당 직원 선택 > 직속 상급자의 이름, 전화번호 출력
-- 이벤트 리스너 등록 > 이벤트 핸들러 처리


-- self join
select e.employee_name as 직원이름,
	   e.employee_phone as 직원연락처,
       m.employee_name as 상급자이름,
       m.employee_phone as 상급자연락처
from employees as e
left join employees as m
on e.manager_id = m.employee_id; -- employee_id : pk값
-- join에서 조건절을 사용할 때, PK값을 잘 확인하자 !

 

 

'MySQL' 카테고리의 다른 글

쇼핑몰 서비스의 DB 구축  (1) 2024.06.12
블로그 서비스의 DB 구축  (0) 2024.06.12
정규화(1단계)  (1) 2024.06.11
DML, DDL, DCL  (1) 2024.06.11
MySQL 계정 생성 및 권한  (0) 2024.06.10