SELF 조인
- 같은 테이블끼리 특정 컬럼을 기준으로 매칭되는 컬럼을 출력하는 조인
- 즉, 같은 테이블의 데이터를 각각의 집합으로 분류한 후 조인
실습
1) 업체의 직원 조직도의 데이터를 보여주는 테이블
SELECT * FROM EMPLOYEE;
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
INNER JOIN EMPLOYEE M ON M.EMPLOYEE_ID = E.MANAGER_ID
ORDER BY MANAGER;
3) MPLOYEE 테이블과 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;
4) 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;
-- SELF 조인을 사용하지 않을때 조회 방법 -> 값이 나오지 않음
SELECT *
FROM FILM F1
WHERE
F1.LENGTH = F1.LENGTH
AND F1.FILM_ID <> F1.FILM_ID;
'Database > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] PostgreSQL CROSS 조인 (0) | 2024.06.11 |
---|---|
[PostgreSQL] PostgreSQL FULL OUTER 조인 (0) | 2024.06.11 |
[PostgreSQL] PostgreSQL OUTER 조인 (0) | 2024.06.11 |
[PostgreSQL] PostgreSQL INNER 조인 (0) | 2024.06.11 |
[PostgreSQL] PostgreSQL 조인 (0) | 2024.06.11 |