본문 바로가기

SQL

서브쿼리 기초 WHERE, JOIN 조건으로 실습해보기

서브쿼리는 코딩할 때 정말 많이 쓰인다. 특히 DB2에서는 한 통으로 쿼리문을 짜는 경우가 대부분이기 때문에 거의 모든 쿼리가 서브쿼리 형태로 되어 있다.

 

 

서브쿼리란?

-SELECT 쿼리문 안에 또 SELECT 쿼리문이 있는 것

-단일 SELECT문으로는 조건식을 만들기 어려울 때 사용, 혹은 서로 다른 테이블에 있는 값을 조인하거나 조건문으로 사용할 때 사용

 

 

 

실제 코드로 알아보자.

 

위와 같이 상품 테이블과 매출 테이블이 있다.

판매량이 1,000 이상인 상품의 상품코드, 상품명, 상품가격만 가져오고 싶다면 쿼리를 어떻게 짜면 될까?

 

 

우선 상품 테이블에는 상품의 판매량이 없다. 판매량은 매출 테이블에 있기 때문에 판매량>=1000이라는 조건을 걸기 위해서는 매출 테이블이 필요하다. 이 때 사용하는 것이 바로 서브쿼리이다.

 

select p_code, p_name, p_price 
  from 상품테이블
 where (select s_p_code from 매출테이블 where s_qty>=1000)

 

만약 판매량까지 같이 보고 싶다면 두 테이블을 join하면 된다.

select p_code, p_name, p_price 
  from 상품테이블 A
 left join (select s_p_code, s_qty from 매출테이블 where s_qty>=1000) B
        on A.p_code=B.s_p_code

 

서브쿼리는 무한정으로 사용가능하다.