안녕하세요
너무 쉬울거 같은데 안풀려서 질문 드립니다.
name | favorite |
승호 | 사과 |
승호 | 딸기 |
승호 | 포도 |
명호 | 사과 |
명호 | 딸기 |
기호 | 사과 |
중현 | 사과 |
중현 | 딸기 |
중현 | 포도 |
현호 | 사과 |
현호 | 포도 |
만약에 위와 같은 테이블이 있다고 가정할때 딸기,포도,사과를 모두 좋아하는 사람을 뽑으려면 어떻게 해야 할까요?
SELECT * FROM TABLE WHERE FAVORITE = '딸기' AND.. 의 경우에는 딸기 이후 조회가 안되고요..
SELECT * FROM TABLE WHERE FAVORITE IN ('딸기','포도','사과') 의 경우에는 모두 포함되어 나오고요..
OR조건을 사용하자니 두번쨰 쿼리와 다를게 없고... 참 난감하네요.. 엄청 간단할 거 같은데 안풀리네요.ㅠ
UNION ALL 같은 경우는 제외하고 가능할까요? 입력받는 과일이 30가지가 넘는 경우도 있어서요...
결과
-------------
승호
중현
나왔으면 좋겠습니다.
WITH t AS ( SELECT '승호' name, '사과' favorite FROM dual UNION ALL SELECT '승호', '딸기' FROM dual UNION ALL SELECT '승호', '포도' FROM dual UNION ALL SELECT '명호', '사과' FROM dual UNION ALL SELECT '명호', '딸기' FROM dual UNION ALL SELECT '기호', '사과' FROM dual UNION ALL SELECT '중현', '사과' FROM dual UNION ALL SELECT '중현', '딸기' FROM dual UNION ALL SELECT '중현', '포도' FROM dual UNION ALL SELECT '현호', '사과' FROM dual UNION ALL SELECT '현호', '포도' FROM dual ) SELECT name FROM t WHERE favorite IN ('딸기', '포도', '사과') GROUP BY name HAVING COUNT(*) = 3 ;