데이터 분석/SQL

[SQL 문법] SELF JOIN + ON

참치바나나 2020. 11. 3. 17:50

같은 테이블에서 같은 속성끼리 묶어서 조인하고 싶을 때 사용.

조직도 테이블이 있을 때(테이블 세팅),

CREATE TABLE employee
(
	employee_id int PRIMARY KEY
	,first_name varchar (255) NOT NULL
	,last_name varchar (255) NOT NULL
	,manager_id int
	,FOREIGN KEY (manager_id)
	REFERENCES employee(employee_id)
	ON DELETE CASCADE
);

INSERT INTO employee (
	employee_id
	,first_name
	,last_name
	,manager_id
)
VALUES
(1, 'windy', 'hays',null)
,(2, 'ava','christiened',1 )
,(3, 'hassan','cooner',1)
,(4,'anna','revves',2)
,(5,'sua','norman',3)
,(6,'kelsie','hays',3)
,(7,'tory','goff',3)
,(8,'salley','lester',3);

COMMIT;

SELECT  * FROM employee ;

전 직원과 바로 위 상사(manager_id)의 표시

매니저들이 담당하고 있는 직원을 확인하고 싶다 - INNER JOIN

SELECT
	m.first_name || ' ' || m.last_name manager
	,e.first_name || ' ' || m.last_name employee 
FROM employee e
INNER JOIN employee m
ON m.employee_id = e.manager_id
;

매니저의 employee_id가 직원의 manager_id와 같은 상태로 이너 조인

전 직원과 담당 매니저를 보고 싶다. 단, 매니저가 없는 사람도 보고 싶다 - LEFT OUTER JOIN

SELECT 
	e.first_name || ' ' || e.last_name employee
	,m.first_name || ' ' || m.last_name manager
FROM employee e
LEFT JOIN employee m
ON e.manager_id = m.employee_id
;

직원의 manager_id 가 매니저의 employee_id와 같은 상태로 아우터 조인

아우터 조인은 값이 null이어도 전부 보여줌

'데이터 분석 > SQL' 카테고리의 다른 글

[SQL 문법] CROSS JOIN  (0) 2020.11.04
[SQL 문법] FULL OUTER JOIN  (0) 2020.11.03
[SQL 문법] INNER JOIN + ON  (0) 2020.10.31
[SQL 문법] IS NULL  (0) 2020.10.31
[SQL 문법] LIKE  (0) 2020.10.31