안녕하세요? 저는 DB를 시작한지 얼마 안된 초보입니다.
감리사 문제를 풀다가 쿼리로 바꾸면 어떻게 될까 고민해보고 오라클로 시도도해봤는데, 잘 안돼서 질문을 드립니다.
아래 테이블에서 R,S를 통해 '결과' 테이블을 출력하는 쿼리를 만드려고 합니다. S 테이블의 B 값을 모두 가지고 있는 R 테이블에 있는 이름을 출력하라는 정도의 문제인 것 같은데, 제가 아직 상관 관계 서브쿼리 등의 개념이 부족하고, 쿼리 순서도 잘 몰라서 헤매고 있습니다..
그리고 제가 짠 대로 하면 NULL 값만 출력됩니다...
어디서 잘못된 것일까요??
SELECT A FROM R WHERE NOT EXISTS((SELECT B FROM S) MINUS (SELECT B FROM S S1 WHERE S1.B=R.B));
exists 로는 잘 모르겠네요..
with r as ( select 'John' a, 5 b from dual union all select 'Tom', 8 from dual union all select 'Mary', 8 from dual union all select 'Tom', 1 from dual union all select 'Mary', 5 from dual union all select 'Tom', 5 from dual ), s as ( select 1 b, 'alpha' c from dual union all select 5, 'beta' from dual union all select 8, 'zetta' from dual ) select a from r, s where r.b=s.b group by a having count(*) = (select count(*) from s)