<학습목표>
1. NATURAL JOIN
2. 서브쿼리
메인SQL 내의 SELECT문
1) SCALAR SUBQUERY
SELECT절
2) INLINE VIEW
FROM절
3) NESTED SUBQUERY
WHERE절
SCALAR SUBQUERTY 는 메인쿼리(SELECT)안에 SELECT절을 넣는것을 말한다
EX)
P.254
상품코드, 상품명, 거래처코드, 거래처명
단, 서브쿼리 이용
SCALAR SUBQUERY
SELECT P.PROD_ID 상품코드
, P.PROD_NAME 상품명
, P.PROD_BUYER 거래처코드
, (SELECT BUYER_NAME FROM BUYER WHERE BUYER_ID = P.PROD_BUYER) 거래처명
FROM PROD P;
회원ID(CART_MEMBER), 회원명,
주문번호(CART_NO)
, 상품코드(CART_PROD), 수량(CART_QTY)
단, 서브쿼리 이용
회원명을 아이디에 종속되어있다
MEM_ID -> MEM_NAME
종속한다
MEM_ID(결정자), MEM_NAME(종속자)
SELECT CART_MEMBER 회원ID
, (SELECT MEM_NAME FROM MEMBER WHERE MEM_ID = CART_MEMBER) 회원명
, CART_NO 주문번호
, CART_PROD 상품코드
, CART_QTY 수량
FROM CART;
NESTED는 WHERE절에 SELECT가 들어가는 것이다
EX)
NESTED 서브쿼리5
NESTED 서브쿼리 : WHERE절에 사용된 서브쿼리
장바구니테이블에서 정은실 회원의 구매 현황을 출력
ALIAS : 주문번호, 상품코드, 회원ID, 수량
SELECT CART_NO 주문번호
, CART_PROD 상품코드
, CART_MEMBER 회원ID
, CART_QTY 수량
FROM CART
WHERE CART_MEMBER = (SELECT MEM_ID FROM MEMBER WHERE MEM_NAME = '정은실');
INLINE VIEW는 평균을 구할때 FROM에 SELECT가 들어가는 것이다
EX)
P.255
회원테이블에서 마일리지가 평균마일리지 보다 큰 회원을
검색하시오 (ALIAS : 회원명, 마일리지, 평균마일리지)
SELECT M.MEM_NAME 회원명
, M.MEM_MILEAGE 마일리지
, A.AVG_MILEAGE 평균마일리지
FROM MEMBER M, (SELECT AVG(MEM_MILEAGE) AVG_MILEAGE FROM MEMBER) A
WHERE M.MEM_MILEAGE > A.AVG_MILEAGE;
문제)
장바구니Table에서 판매수가 평균판매수 보다 큰 데이터를
검색하시오 ?
(Alias는 회원ID, 장바구니번호, 상품코드, 판매수, 평균판매수)
SELECT C.CART_MEMBER 회원ID
, C.CART_NO 장바구니번호
, C.CART_PROD 상품코드
, C.CART_QTY 판매수
, A.AVG_QTY 평균판매수
FROM CART C, (SELECT AVG(CART_QTY) AVG_QTY FROM CART) A
WHERE CART_QTY > A.AVG_QTY;