我坚持要根据类型和语言来获取电影列表。
这是我的数据库结构:
movies table ----------------------- id | title| ---------------------- 1 | ABC 2 | PQR 3 | MNC
category table ----------------------- id | catgory | value ---------------------- 1 | language |Hindi 2 | language |Endilish 3 | genre |Drama 4 | genre |Action 5 | genre |Thriller
manage table ----------------------- id|catgory_id|movie_id ---------------------- 1 | 1 | 1 2 | 3 | 1 3 | 4 | 1 4 | 2 | 2 5 | 4 | 2
这就是我想要做的,我想要具有动作类型的印地语电影。
下面是我的查询:
SELECT *
FROM manage
WHERE category_id='1' AND category_id='4'
GROUP BY movie_id
我期待动作类型的印地语电影的结果,但返回空结果。
但是当我在查询中使用OR
运算符时,它会返回结果,但电影的语言也为英语,但预期语言为印地语和类型动作。
我要去哪里错了?
答案 0 :(得分:1)
这是一种使用聚合的解决方案:
window.history.back(-1);
此 demo on DB Fiddle 及其示例数据将返回:
SELECT m.id, m.title
FROM movie m
INNER JOIN manage a ON a.movie_id = m.id
INNER JOIN category c ON a.category_id = c.id
GROUP BY m.id, m.title
HAVING
MAX(c.category = 'language' AND c.value = 'Hindi') = 1
AND MAX(c.category = 'genre' AND c.value = 'Action') = 1