구루비 회원님들 안녕하세요.
어떻게 이야기를 풀어서 말씀을 드릴지몰라, 예를 들어 설명하도록 하겠습니다.
1:N관계의 테이블인데요. N의 테이블이 다음과 같이 있습니다.
N테이블
pk_id | fk_id | type |
1 | 1 | apple |
2 | 1 | banana |
3 | 2 | apple |
4 | 3 | banana |
N테이블에서 'type이 apple 이면서 banana' 인 경우를 출력하고싶어요.
apple이나 banana 둘중하나라면 where type in ( 'apple', 'banana')를 사용하면 되는데요.
하나의 컬럼(type)에서 여러 조건절이 완벽히 맞는 애를 출력하고싶어요.
결과는 fk_id가 1인 애만 출력이 되길 원합니다.
(fk_id가 2인애는 banana가 없고 fk_id가 3인애는 apple없어서 출력이안됩니다. )
쉬운것 같은데. 알듯 말듯.... 잘안됩니다ㅠ
읽어주셔서 감사드립니다.
좋은 하루보내세요!
SELECT T1.* FROM TABLE_N T1 ,( SELECT fk_id, COUNT(DISTINCT type) FROM TABLE_N WHERE type IN ( 'apple', 'banana') GROUP BY fk_id HAVING COUNT(DISTINCT type) = 2 ) T2 WHERE T1.fk_id = T2.fk_id
타입을 2개 입력했고, 이에 2종류를 모두 가지는 fk_id 를 추출 하는것이 포인트 같습니다.
T2 부분이 2종류의 입력값을 가지는 fk_id를 추출하는 쿼리 입니다.
해당 쿼리와 원본쿼리를 fk_id 로 조인해서 원하는 데이터를 도출할 수 있을 듯 하네요.