2012-12-10 60 views
1

我有一个条目表和一个链接两个连接表的类别表,我想要做的是选择与特定的一组类别匹配的所有条目。选择与连接表中的所有选定行相匹配的行

例如。有A类和B类

entry_id | title 
------------------ 
1  | Entry 1 
2  | Entry 2 
3  | Entry 3 

类别

category_id | name 
------------------ 
1   | A 
2   | B 
3   | C 

entry_categories

entry_id | category_id 
----------------------- 
1  | 1 
1  | 2 
2  | 1 
2  | 2 
2  | 3 
3  | 1 
3  | 3 

所有参赛作品如果我这样做,我得到的所有3项,因为他们每场比赛至少有一个类别,但我真正想要的是Entry 1和Entry 2,但是n OT输入3.

SELECT * 
FROM entry_categories AS ec 
INNER JOIN entries AS e ON ec.entry_id = e.entry_id 
WHERE ec.category_id IN(1, 2) 
GROUP BY e.entry_id 

回答

5

添加HAVING COUNT(ec.Categor_id) = 2像这样:

SELECT * 
FROM entry_categories AS ec 
INNER JOIN entries AS e ON ec.entry_id = e.entry_id 
WHERE ec.category_id IN(1, 2) 
GROUP BY e.entry_id 
HAVING COUNT(ec.Category_id) = 2 
+0

可能要解决的是,拼写和大小写('COUNT(ec.Categor_id)''到COUNT(ec.category_id)' )。 – MichaelRushton

+0

@MichaelRushton - 对不起,现在修复。谢谢 –

相关问题