0

我有 3 个 sql 表调用类别、电影、类别电影。类别和电影表具有多对多关系。这就是我使用 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

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

4

2 回答 2

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
于 2013-01-11T13:58:51.260 回答
0

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

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

于 2013-01-11T13:58:55.477 回答