2016-07-25 2 views
-1

부모 테이블과 하위 테이블이 두 개 있습니다.자식 테이블에서 하위 항목과 일치하는 항목을 쿼리하는 방법

ParentChild 테이블에는 2 개의 열 PID와 CID가 있으며, 여기서 1 개의 PID는 여러 개의 CID에 매핑 할 수 있습니다. 하위 테이블에 고유 한 CID가 있습니다. 문제는 자식 테이블의 CID가 ParentChild 테이블의 모든 CID를 반드시 덮지는 않는다는 것입니다.

이제 각 PID가 모든 CID를 하위 테이블에 가지고있는 모든 PID를 찾고 싶습니다. 예 : P1에 3 개의 CID가 있고, 모두 자식 테이블에 있으면 P1이 선택됩니다. P2에는 2 개의 CID가 있고, 모두가 하위 테이블에 있지 않으면 P2가 선택되지 않습니다.

어떻게 명확하고 효율적인 방법으로 쿼리를 작성합니까? 모든 어린이가 일치

select pc.pid 
from parentchild pc left join 
    child c 
    on pc.cid = c.cid 
group by pc.pid 
having count(*) = count(c.cid); 

마지막 조건 검사 :

+0

일부 샘플 데이터보기 –

답변

3

한 가지 방법은 집계를 사용합니다.

관련 문제