我坚持要根据类型和语言获得电影列表。
这是我的数据库结构:
电影表 ----------------------- id | 标题| ---------------------- 1 | ABC 2 | PQR 3 | 跨国公司
类别表 ----------------------- id | 类别| 值 ---------------------- 1 | 语言|印地语 2 | 语言|尾号 3 | 风格|戏剧 4 | 类型|动作 5 | 流派|惊悚
管理表 ----------------------- 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
在查询中使用运算符时,它返回结果,但电影的语言也为英语,但预期的语言为Hindi和Genre Action。
我要去哪里错了?
这是一种使用聚合的解决方案:
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
DB Fiddle上的此演示以及您的示例数据返回:
| id | title |
| --- | ----- |
| 1 | ABC |
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句