개키우는개발자 : )

PostgreSQL SELF 조인 본문

PostgreSQL/조인과 집계 데이터

PostgreSQL SELF 조인

DOGvelopers 2019. 11. 3. 15:36
반응형

실습 테이블 만들기 https://dog-developers.tistory.com/140

SELF 조인 이란?

같은 테이블 끼리 특정 컬럼을 기준으로 매칭 되는 컬럼을 출력하는 조인이다. 즉 같은 테이블의 데이터를 각각의 집합으로 분류한 후 조인합니다.

 

실습

 

- 업체의 직원 조직도의 데이터를 보여주는 테이블 입니다.

SELECT * FROM EMPLOYEE;

manager_id는 employee_id 의 하위에 포함된 직원이라고 판단 할 수 있습니다.

Windy 는 manager_id 가 null이니 최상위 관리자라 할 수 있으며 Ava,Hassan 은 manager_id가 1입니다. 즉 employee_id 1번 보다 하위의 직책 입니다. 이런식으로 조직도 관계를 데이터로 파악이 가능합니다.

실습1

tree 형태로 조직도를 구성하면 아래와 같은 구조를 볼 수 있습니다.

tree

 

- EMPLOYEE 테이블과 EMPLOYEE 테이블을 조인 합니다. EMPLOYEE_ID 와 MANAGER_ID 컬럼을 조인 합니다.

SELECT
	E.FIRST_NAME || ' ' || E.LAST_NAME EMPLOYEE,
	M.FIRST_NAME || ' ' || M.LAST_NAME MANAGER
FROM
	EMPLOYEE E
INNER JOIN EMPLOYEE M ON
	M.EMPLOYEE_ID = E.MANAGER_ID
ORDER BY
	MANAGER

 제일 상위 관리자인 MANAGER_ID 가 NULL인 직원은 JOIN할 ID값이 없어 조회 되지 않습니다.

실습2

- EMPLOYEE 테이블과 EMPLOYEE 테이블을 조인 합니다. EMPLOYEE_ID 와 MANAGER_ID 컬럼을 조인 합니다.

단 최상위 관리자도 모두 보이게 조회합니다.

SELECT
	E.FIRST_NAME || ' ' || E.LAST_NAME EMPLOYEE,
	M.FIRST_NAME || ' ' || M.LAST_NAME MANAGER
FROM
	EMPLOYEE E
LEFT JOIN EMPLOYEE M ON
	M.EMPLOYEE_ID = E.MANAGER_ID
ORDER BY
	MANAGER

manager 가 null이므로 최상위 관리자인걸 알 수 있습니다.

실습3

- FILM 테이블과 FILM 테이블을 SELF 조인합니다. 서로 다른 영화인 집합을 조회하며 영화의 상영 시간은 동일한 데이터를 조회합니다.

 

SELECT
	F1.TITLE,
	F2.TITLE,
	F1.LENGTH
FROM
	FILM F1
INNER JOIN FILM F2 ON
	F1.FILM_ID <> F2.FILM_ID
	AND F1.LENGTH = F2.LENGTH;

상영시간이 같은 영화1,영화2

실습4

- SELF 조인을 사용하지 않을때 조회 방법

SELECT
	*
FROM
	FILM F1
WHERE
	F1.LENGTH = F1.LENGTH
	AND F1.FILM_ID <> F1.FILM_ID;

값이 나올 수 없습니다. 동일한 테이블의 데이터를 참조하여 조회 하려면 각각의 다른 집합으로 구성한 후 그안에서 자신이 원하는 조건을 입력하여 정보를 조회합니다.

실습5

 

반응형

'PostgreSQL > 조인과 집계 데이터' 카테고리의 다른 글

PostgreSQL CROSS 조인  (0) 2019.11.03
PostgreSQL FULL OUTER 조인  (0) 2019.11.03
PostgreSQL OUTER 조인  (0) 2019.11.03
PostgreSQL INNER 조인  (0) 2019.11.03
PostgreSQL 조인 이란? JOIN실습 Table 만들기  (0) 2019.10.29
Comments