위의 그림은 일단 DB 테이블입니다.
책에 있는 문제 나름대로 풀어봣는데 이상한 결과가 나와서 질문드립니다.
문제는
판매 데이터베이스에서 banana 고객이 주문한 제품의 제품명과 제조업체를 검색해보자.
이것입니다. 저는 이문제의 답을
select 제품명, 제품명
from 제품
where exists (select 주문제품 from 주문 where 주문고객 = 'banana' );
게 적고 실행해 보았는데아예
제품 테이블 전체결과값이 나왓습니다.
교재의 답은
select 제품명, 제품명
from 제품
where 제품번호 in (select 주문제품 from 주문 where 주문고객 = 'banana' );
이거 입니다 이경우 3가지 그냥만두, 맛난 ,초콜릿, 통통우동 이라는
제대로된 결과값이 나옵니다.
왜 이렇게 나오는지 알고싶습니다 ㅠㅠ
참고로 제가돌려본DBMS는 오라클입니당.
exist 이거 존재유무만 체크해주는거 아닌가 아 아닌가 in 이랑 같은 건데 in보다 효율이 좋다고 했나 다까묵
Subquery에서 Main query의 Column을 참조하지 않으니 따로 놀지. 너가 한 방식대로 짠다고 했을 때 제대로 된 답은 SELECT 제품명, 제조업체 FROM 제품 WHERE EXISTS (SELECT 주문제품 FROM 주문 WHERE 주문고객 = 'banana' AND 주문제품 = 제품.제품번호) 처럼 짜야 됨