如何根据类型和语言获取电影列表

时间:2019-04-01 10:16:39

标签: php mysql sql database

我坚持要根据类型和语言来获取电影列表。

这是我的数据库结构:

    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运算符时,它会返回结果,但电影的语言也为英语,但预期语言为印地语和类型动作

我要去哪里错了?

1 个答案:

答案 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