2011-03-07 38 views
2

我有一個Person表,Group表和Group_Person表,其中許多人員實體可以有許多組實體。 Group_Person充當中間表,並且具有映射到來自組表格的group_id的元組(group_id,person_id)和來自Person表格的person_id。MySQL查詢類似Intersect的功能

如果Person表中存在0個或多個person_id(即從Person表中查詢),我想從Group表中找到所有組,其中,在Group_Person表中,每個person_id都有一個元組(group_id,person_id)。換句話說,每個person_ids被映射到一個普通的group_id。

由於MySQL有沒有INTERSECT功能,我想這樣做下面的查詢(這僅返回GROUP_ID):

SELECT t1.group_id 
FROM Group_Person AS t1 
JOIN Group_Person AS t2 ON t1.group_id = t2.group_id 
WHERE t1.person_id = xxx AND t2.person_id = yyy; 

此外,還有可以在這裏0以上person_ids。這是最好的解決方案嗎?

回答

3

我不認爲加入group_person多次會爲你做。你可能想要這樣的事情:

SELECT group_id 
FROM Group_Person 
WHERE person_id in(put the ids here) 
GROUP BY group_id 
HAVING count(group_id) = the count of person_ids