这个查询有什么问题?

时间:2013-01-11 13:57:31

标签: mysql sql select

我有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

但这现在正在运作..任何人都可以告诉我这个查询有什么问题吗?

2 个答案:

答案 0 :(得分: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 JOIN不是INNOR 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

答案 1 :(得分:0)

INNOR - >内 WHERE cat_id = 2 AND 5 AND 7

几乎不可能正确它可能应该是OR