2012-06-01 3 views
3

테이블을 단순화하여 이해하기 쉽도록했습니다.정의 된 값과 일치하는 정확한 그룹을 찾는 방법은 무엇입니까?

그룹이있는 테이블이 있고 그룹에 여러 값이 있습니다. 다음은 테이블입니다.

VALUE | GROUP 
    A | 1 
    B | 1 
    A | 2 
    C | 2 
    B | 3 
    A | 4 
    B | 4 
    A | 5 
    B | 5 
    C | 5 

이 값과 일치하는 정확한 그룹을 프로그래밍 방식으로 만들고 찾은 쿼리에 값을 제공하고 싶습니다. 당신은 다음과 같은 쿼리를 사용할 수 있습니다

A ---------------> null 
A and B ----------> 1 and 4 
A , B and C ------> 5 
B ---------------> 3 
A and C ----------> 2 
C ----------------> null 
+0

이미 시도한 검색어는 무엇입니까? – Sean

+0

규칙을 설명하십시오. 왜 A 나 C가 exmaple에 대해 NULL인가? –

+1

@PreetSangha : 'A'또는 'C'만으로 구성된 그룹이 없기 때문입니다. – Quassnoi

답변

3

내 쿼리에 값 A와 B를 제공 예를 들어

나는 결과 그룹 1로 원하는 4 (가정 값을 그룹 쌍 독특한) :

select `GROUP` 
from MyTable 
group by `GROUP` 
having count(`VALUE`) = count(case when `VALUE` IN ('a','b') then 1 end) 
    and count(case when `VALUE` IN ('a','b') then 1 end) = @Count; 

것은 ('a','b')은 당신이 테스트 값의 목록이 될 것이며, @Count은 수표 집합의 서로 다른 값의 수 (이 경우 2) 될 경우.

데모 : http://www.sqlfiddle.com/#!2/78def/13

+0

와우, 그건 내가 필요한 것입니다. 많은 감사합니다! – Jspr

관련 문제