선택장애

데이터베이스(DB) - 부속질의(예제, 문제상세풀이 + 상관 부속질의) 본문

데이터베이스(DB)

데이터베이스(DB) - 부속질의(예제, 문제상세풀이 + 상관 부속질의)

yes or yes 2017. 8. 14. 15:50
반응형

부속질의는 쿼리문안에 또 쿼리문이 있는건데욤...
조건문안에 또 다른 조건문을 넣는거죠!

참고로 앞에 포스팅에서 계속 이어지는 것이기때문에 앞에 보고 와주시면 이해하는데 쉽습니다!
데이터베이스(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);

 

★어떻게 데이터가 나온지 한번 그림으로 보죠

 

 

반응형