2013-01-11 39 views
0

我有3個SQL表調用類別,電影,category_movies。類別和電影表有許多關係。這就是爲什麼我使用category_movies表。這是臺結構......這個查詢有什麼問題?

Category : cat_id, cat_name, 
movies : mov_id, mov_name, 
category_movies : cat_id, mov_id 

現在我有3類ID的動態,現在我要選擇的電影與類名獨屬於3個CATEGORY_ID已經得到了名字。

這是我試過到目前爲止查詢..

SELECT c.cat_name AS cn, m.mov_name AS mn, m.mov_id 
FROM category AS c 
     INNER JOIN category_movies AS cm ON cm.cat_id = c.cat_id   
     INNER JOIN movies AS m ON m.mov_id = cs.mov_id 
WHERE c.cat_id IN (2, 5, 7) 
GROUP BY c.cat_name, m.mov_name, m.mov_id 
HAVING COUNT(*) >= 3 

但現在工作..有誰能夠告訴我,什麼是錯的這個查詢?

+6

不是「 INNOR JOIN「應該是」INNER JOIN「 –

+0

當你限制時,你如何期望返回任何東西?有這個記錄嗎? 'WHERE cat_id = 2 AND 5 and 7';) – bonCodigo

回答

4

使用IN子句此

SELECT.. 
FROM.. 
WHERE cat_id IN (2, 5, 7) 

,並與同

SELECT.. 
FROM.. 
WHERE cat_id = 2 OR 
     cat_id = 5 OR 
     cat_id = 7 

也請大家注意,這是INNER JOININNOR JOIN

,但我想,你要執行RELATIONAL Division)要搜索具有所有要查找的類別的電影

SELECT c.cat_name, m.mov_name, m.mov_id 
FROM category AS c 
     INNER JOIN movies AS m ON m.cat_id = c.cat_id 
     INNER JOIN category_movies AS cm ON cm.mov_id = m.mov_id 
WHERE cat_id IN (2, 5, 7) 
GROUP BY c.cat_name, m.mov_name, m.mov_id 
HAVING COUNT(*) >= 3 
+0

太棒了!關於發現其他人的錯誤 –

+0

沒有這兩行查詢正在工作..但與此行現在工作.. GROUP BY c.cat_name,m.mov_name,m.mov_id HAVING COUNT(*)> = – TNK

+0

整個查詢給我是一個空集 – TNK

0

英諾 - > INNER WHERE CAT_ID = 2和5以及7

幾乎不能是正確的,它可能應該是OR