2014-09-23 1 views
0

응답 해 주셔서 감사하지만, 시나리오가 두 개의 GroupNames만으로 세 번째 Group_ID를 추가하기 위해 확장 된 경우에도 응답을받습니다. 2 테이블과 일치하고 두 번째 테이블의 모든 항목이 일치하는 그룹 ID를 찾는 쿼리를 작성하는 데 도움을주십시오.SQL 테이블을 일치시키고 각 그룹에 항목이 있는지 찾으십시오.

표 1

Group_Id GroupNames  GroupValues  
111   G1    A  
111   G1    B  
111   G1    C  
111   G2    D  
111   G2    E  
111   G2    F  
111   G3    G  
222   G1    A  
222   G1    B  
222   G1    C  
222   G2    E  
222   G2    F  
222   G3    G 
333   G3    G 
333   G1    B 
333   G1    C 

표 2

GroupValues  
B  
D  
G 
H 

OUTPUT

111 

조회 말아야 출력 d는 "G1, G2, G3"의 세 가지 그룹 이름에 대해 최소한 하나의 항목을 가지고 있으므로 "111"이됩니다. 그룹 이름 G2에 대해 "222"항목이 누락되어 반환되지 않습니다. 도와주세요.

답변

1

당신은 집계하고 having 절을 사용하여이 작업을 수행 할 수 있습니다 당신은 중복 값이없는 알고있는 경우 distinct이 필요하지 않다고

select t1.Group_Id 
from table1 t1 inner join 
    table2 
    on t2.GroupValues = t1.GroupValues 
group by t1.Group_id 
having count(distinct t1.GroupValues) = (select count(distinct GroupValues) from table2); 

참고.

+0

이 너무 일 ** 이너 t1.Group_id 갖는 카운트 (별개 t1.GroupValues) = (기준 = t2.GroupValues ​​용의 t1.GroupValues에 기를 표 2 T2 가입의 표 T1로부터 t1.Group_Id 를 선택 표 2에서 count (distinct GroupValues)를 선택하십시오. – Piyush

+0

@Piyush. . . 귀하의 의견에있는 쿼리가 내 대답의 쿼리와 어떻게 다른지에 관해서는 명확하지 않습니다. 단,'count (distinct) '(좋은 점)에서'GroupValues'를 수식했다는 점만 다릅니다. –

+0

@Gordon ... 나는 당신의 쿼리가 너무 효과가 있었음을 의미했지만 GroupNames는 그것에 대해 고려되지 않았습니다. – Piyush

0

두 가지 해결책을 게시하면 Gordon Linoff가 제안한 내용과 새로운 내용이 약간 수정됩니다.

1)은 SELECT를 넣고 마이너스에서 특정 GROUP_ID

select t1.Group_Id 
from (select distinct Group_Id,GroupValues from table1)t1 inner join 
    table2 
    on t2.GroupValues = t1.GroupValues 
group by t1.Group_id 
having count(distinct GroupValues) = (select count(distinct GroupValues) from table2) 

2) 내에서 중복 GroupValues이있는 경우, 식별하는데 사용 완료하지 않은 GROUP_ID (또는 가지고있다 넣다 인라인 뷰 T1 추가, group_id와 GroupValues의 모든 조합). 이 id는 table1에있는 모든 group_id에서 제거되므로 결과도 마찬가지입니다.

select distinct group_id 
from table1 
minus 
select distinct Group_Id 
from Table2 t2,(select distinct Group_Id from Table1) t1 
where not exists (select 1 
        from Table1 t11 
        where t1.Group_Id = t11.Group_Id 
        and t11.GroupValues = t2.GroupValues) 
관련 문제