2012-10-03 5 views
0

(의 조합에 반대) 관계 일치의 전체 목록 : 나는 모든 가져 오는 것 어떻게 태그 ID의 목록을 가지고 있다면경우 다음과 같은 간단한 테이블 구조와

Data 
---------- 
id 

Tag 
---------- 
id 

TaggedData 
---------- 
id 
tag_id 
data_id 

, 내 목록에있는 태그의 모든 행이 데이터의 행과 관련이 있고 그 하위 집합이 아닌 데이터의 행? 특히

SELECT 
     Data.* 

    FROM 
     Data 
    LEFT JOIN 
     TaggedData ON (Data.id = TaggedData.data_id) 
    LEFT JOIN 
     Tag ON (Tag.id = TaggedData.tag_id) 

    WHERE 
     Tag.id IN ('1' , '2') 

은 :가 1 또는 2 없음 태그와 관련된 데이터의 행을 반환하기 때문에 하나가 작동하지 않습니다 여기에

내가 지금 문제가 해결되지 않은 쿼리 1 2.

답변

1

이는 "관계 부서"

SELECT 
     Data.ID 
    FROM 
     Data 
    INNER JOIN 
     TaggedData ON (Data.id = TaggedData.data_id) 
    INNER JOIN 
     Tag ON (Tag.id = TaggedData.tag_id) 
    WHERE 
     Tag.id IN ('1' , '2') 
    HAVING COUNT(DISTINCT tag.iD)=2 
+0

와우라고합니다! 이 세상에서 적어도 한 명 이상은 당신이 철저히 똑똑하다고 생각한다는 것을 알고 집에 가십시오. –