0

表结构:

表电影

中间标题
1 遗忘
2 钢铁侠 3
3 牛仔和外星人

表 GENRES

gid 类型
1 动作
2 科幻
3 西部
4 戏剧

表 MOVIEGENRES

中间
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);
4

2 回答 2

0

通常这表现为:

SELECT mid, COUNT(*) AS matches FROM moviegenres WHERE gid IN (4,5) HAVING matches=2

您将IN内容调整为 N 个条目,并且matches=N.

于 2013-08-01T19:08:30.983 回答
0

试试这个方法看看有什么结果。

从 MOVIEGENRES 中选择 MOVIES.title 作为 INNER JOIN GENRES 作为 b ON a.mid = b.mid INNER JOIN MOVIEGENRES 作为 c ON a.gid =c.gid GROUP BY MOVIEGENRES.title

于 2013-08-01T19:56:29.713 回答