2010-08-02 5 views
0

에서 하나 개의 레코드의 존재를 확인 나는 구조를 가지고 두 개의 테이블이 있습니다여러 행

`content` (id, foreign_id, type, date_added) 
`content_territory` (id, content_id, territory_iso) 

이 테이블의 구조를 설계 그래서 당신은 액세스 할 수있는 모든 영역에 대해 하나 개의 content_territory 기록을 가지고 콘텐츠의 조각. 이것은 하나의 content 항목이 200 개 이상의 영토 기록을 가질 수 있음을 의미합니다.

내가 가진 문제는 가장 최근의 콘텐츠를 나열 할 때 해당 콘텐츠의 영토가 IN() 사용자 영역임을 확인하고 표시되지 않는 경우 해당 기록을 무시하는 것입니다.

답변

0
SELECT c.* 
    FROM content AS c 
LEFT JOIN content_territory AS ct 
     ON c.id = ct.content_id 
    WHERE ct.id IN (...) 
GROUP BY c.id 
0
select id, foreign_id, type, date_added 
from content 
where id in (select content_id from content_territory) 
0
SELECT id, foreign_id, type, date_added 
    FROM content 
    WHERE EXISTS (SELECT * 
         FROM content_territory 
         WHERE content_id = content.id);