데이터베이스(DB) - 부속질의(예제, 문제상세풀이 + 상관 부속질의)
부속질의는 쿼리문안에 또 쿼리문이 있는건데욤...
조건문안에 또 다른 조건문을 넣는거죠!
참고로 앞에 포스팅에서 계속 이어지는 것이기때문에 앞에 보고 와주시면 이해하는데 쉽습니다!
( 데이터베이스(DB) - Join(cross join, 내부조인(inner join) - 예제,문제풀이_1 ) 부터 봐주세욤..
문제 1. 가장 비싼 도서의 이름을 보이시오.
SELECT bookname
FROM Book
WHERE price = ( SELECT MAX(price) FROM Book);
/*책 이름을 가져 오는데 price의 값이 제일 높은(MAX)값을 가져오는거죠*/
문제 2. 도서를 구매한 적이 있는 고객의 이름을 검색하시오.
SELECT name
FROM Customer
WHERE custid IN (SELECT custid FROM Orders);
문제 3. 대한미디어에서 출판한 도서를 구매한 고객의 이름을 보이시오.
SELECT name
FROM Customer
WHERE custid IN (SELECT custid
FROM Orders
WHERE bookid IN (SELECT bookid
FROM Book
WHERE publisher='대한미디어'));
★쿼리문 안에 쿼리문 안에 쿼리문이라니.... 복잡해 보이지만 하나씩 뜯어볼까요
- 먼저 실행순서의 그림이구요
- 데이터가 어떻게 나오는지 확인하는 그림에요
●상관 부속질의
- 상위 부속질의의 투플을 이용하여 하위 부 속질의를 계산한다. 즉 상위 부속질의와 하위 부속질의가 독립적이지 않고 서로 관 련을 맺고 있다.
문제 1. 출판사별로 출판사의 평균 도서 가격보다 비싼 도서를 구하시오.
(출판사.. 평균.. 비싼.. 도서.. 헷갈려도 천천히 해보죠)
SELECT b1.bookname
FROM Book b1
WHERE b1.price > (SELECT avg(b2.price)
FROM Book b2
WHERE b2.publisher = b1.publisher);
★어떻게 데이터가 나온지 한번 그림으로 보죠