表格结构:
表格MOVIES
标题中间 1遗忘
2钢铁侠3
3牛仔&外星人表格GENRES
gid类型
1行动
2科幻 3西方 4剧情表MOVIEGENRES
mid gid
1 1
1 2
1 4
2 1
2 2
3 1
3 2
3 3
问题: 现在我试图只选择那些同时具有“西方”和“科幻”类型的电影,例如牛仔&外星人有西方和科幻类型。
我尝试过以下查询,但它会返回所有具有任何指定类型的电影
SELECT m.title FROM movies m,moviegenres mg WHERE m.mid = mg.mid AND mg.gid in (2,3);
答案 0 :(得分:0)
通常情况如下:
SELECT mid, COUNT(*) AS matches FROM moviegenres WHERE gid IN (4,5) HAVING matches=2
您将IN
内容调整为N个条目,并matches=N
。
答案 1 :(得分:0)
尝试这种方法看看会发生什么。
从MOVIEGENRES选择MOVIES.title作为内部联接GENRES为b ON a.mid = b.mid INNER JOIN MOVIEGENRES as c ON a.gid = c.gid GROUP BY MOVIEGENRES.title