【问题标题】:Can't figure out how to select movies categorized in specific genres不知道如何选择按特定类型分类的电影
【发布时间】:2013-08-02 03:56:29
【问题描述】:

表格结构:

表电影

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

表格类型

gid 流派
1 个动作
2 科幻
3 西部
4 剧情

表 MOVIEGENRES

中间gid
1 1
1 2
1 4
2 1
2 2
3 1
3 2
3 3

问题: 现在我试图只选择那些同时具有“西方”和“科幻”类型的电影,例如。 Cowboys & Aliens 既有西部片也有科幻片。

我尝试了以下查询,但它返回的所有电影仅具有任何指定类型

SELECT m.title FROM movies m,moviegenres mg WHERE m.mid = mg.mid AND mg.gid in (2,3);

【问题讨论】:

  • danihp,我已经编辑了我的问题
  • 结果如何?您尝试过我们提供的查询吗?

标签: mysql select


【解决方案1】:

通常情况如下:

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

您将调整IN 的内容为N 个条目,以及matches=N

【讨论】:

  • IN 子句中的值更改为与您的数据匹配的值。这只是一个例子。 IN 本身将使用 一个或多个 匹配,但使用 HAVING 子句,您可以将其限制为 N,如果 N 是最大数,那么它只匹配那些匹配所有的。
【解决方案2】:

试试这个方法看看会发生什么。

SELECT MOVIES.title FROM MOVIEGENRES AS a INNER JOIN GENRES as b ON a.mid = b.mid INNER JOIN MOVIEGENRES as c ON a.gid =c.gid GROUP BY MOVIEGENRES.title

【讨论】:

  • 顺便说一句,我希望表之间已经有关系
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-13
  • 2012-02-29
  • 1970-01-01
  • 2016-04-04
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多