코딩 기록들

[Database Programming] 5. 서브쿼리 본문

카테고리 없음

[Database Programming] 5. 서브쿼리

코딩펭귄 2024. 2. 19. 17:31

서브쿼리

- 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 부서의 부서 번호(서브쿼리의 결과)를 찾아 사원의 부서 번호와 조회

↓ 서브쿼리 활용한 풀이방법  

-- 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'))
;