2012-12-10 61 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 - 對不起,現在修復。謝謝 –

相關問題