안녕하세요? 저는 DB를 시작한지 얼마 안된 초보입니다.
감리사 문제를 풀다가 쿼리로 바꾸면 어떻게 될까 고민해보고 오라클로 시도도해봤는데, 잘 안돼서 질문을 드립니다.
아래 테이블에서 R,S를 통해 '결과' 테이블을 출력하는 쿼리를 만드려고 합니다. S 테이블의 B 값을 모두 가지고 있는 R 테이블에 있는 이름을 출력하라는 정도의 문제인 것 같은데, 제가 아직 상관 관계 서브쿼리 등의 개념이 부족하고, 쿼리 순서도 잘 몰라서 헤매고 있습니다..
그리고 제가 짠 대로 하면 NULL 값만 출력됩니다...
어디서 잘못된 것일까요??
1 | SELECT A FROM R WHERE NOT EXISTS(( SELECT B FROM S) MINUS ( SELECT B FROM S S1 WHERE S1.B=R.B)); |
exists 로는 잘 모르겠네요..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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) |