코딩 기록들
[Database Programming] 5. 서브쿼리 본문
서브쿼리
- SELECT쿼리 안의 SELECT쿼리 (WHERE에서 사용할 때)
- 조회하려는 대상을 정확히 알지 못할 때, 조회하려는 대상이 하나 이상일 때 사용함
- 서브쿼리는 SELECT ~FROM 형태로 작성해야 함
SELECT *
FROM TABLE
WHERE COLUMN = (SELECT COLUMN
FROM TABLE
WHERE 조건)
SELECT col -> col 대신 쓰는 쿼리 : 스칼라 쿼리
FROM table -> table 대신 쓰는 쿼리 : INLINE VIEW
WHERE col 연산자 값 -> 값 대신에 쓰는 쿼리 = 서브쿼리
예제) “IT” 부서에서 근무중인 사원들의 정보를 조회 (조회대상(PK)을 모름)
* 서브쿼리 대상 *
- IT에 부서에서 근무하려는 사원을 찾기 위해 -> IT 부서의 부서 번호를 알아야 한다.
- IT에 부서에서 근무하려는 사원을 찾기 위해 -> IT 부서의 부서 번호를 알아야 한다.
=> IT 부서의 부서 번호(서브쿼리의 결과)를 찾아 사원의 부서 번호와 조회
↓ 서브쿼리 활용한 풀이방법 ↓
-- SYB QUERY 작성 팁 : SUB QUERY를 먼저 작성할것! (우리가 알기위해 필요한 코드를 먼저 작성)
-- 문제 : 부서명 "IT" 부서에서 근무중인 사원들의 정보를 조회 (IT부서의 부서번호를 모르는 상황)
SELECT *
FROM EMPLOYEES
WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID
FROM DEPARTMENTS
WHERE DEPARTMENT_NAME = 'IT')
;
-- 문제 : 도시명이 'Seattle'인 지역에서 근무중인 모든 사원들의 정보를 조회한다
-- 알아야할 정보1. : 도시명이 시에틀인 지역의 지역번호 - 1700
-- 알아야할 정보2. : 지역번호가 1700번인 부서번호 - 10,30,90,100, 110, 120, 130...
-- 알고싶은 정보 : 그 부서에서 근무하는 사원들의 번호
SELECT*
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID
FROM DEPARTMENTS
WHERE LOCATION_ID = (SELECT LOCATION_ID
FROM LOCATIONS
WHERE CITY = 'Seattle'))
;