일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- java
- spring aop
- @Spring-Test
- java spring
- 리눅스
- XML
- pointcut
- @AspectJ
- Di
- 프로퍼티
- Framework
- AOP
- unix
- spring
- Linux
- Spring Boot
- SpringJDBC
- Ubunt
- @JUnit
- 마이바티스
- JDBC TEMPLATE
- STS
- Dependency Injection
- POJO
- myBatis
- spring framework
- JdbcTemplate
- 컨테이너
- Spring JDBC
- @test
- Today
- Total
개키우는개발자 : )
PostgreSQL SELF 조인 본문
실습 테이블 만들기 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번 보다 하위의 직책 입니다. 이런식으로 조직도 관계를 데이터로 파악이 가능합니다.
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값이 없어 조회 되지 않습니다.
- 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이므로 최상위 관리자인걸 알 수 있습니다.
- 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
- SELF 조인을 사용하지 않을때 조회 방법
SELECT
*
FROM
FILM F1
WHERE
F1.LENGTH = F1.LENGTH
AND F1.FILM_ID <> F1.FILM_ID;
값이 나올 수 없습니다. 동일한 테이블의 데이터를 참조하여 조회 하려면 각각의 다른 집합으로 구성한 후 그안에서 자신이 원하는 조건을 입력하여 정보를 조회합니다.
'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 |