我有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
但这现在正在运作..任何人都可以告诉我这个查询有什么问题吗?
答案 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