【问题标题】:SQL Join the count to a querySQL 将计数加入查询
【发布时间】:2012-06-21 02:30:27
【问题描述】:

我已经为我的电影创建了一个数据库,并为每部电影中的演员创建​​了另一个数据库

列是:

  • 身份证
  • 演员
  • ImdbActorID
  • ImdbMovieID
  • 字符

示例:

47105 |霍华德·麦吉林 | nm0569294 | tt0111333 |成人德里克王子
47106 |米歇尔·尼卡斯特罗 | nm0629264 | tt0111333 |成人奥黛特公主
47108 |约翰·克莱斯 | nm0000092 | tt0111333 |让-鲍勃

当我的 web 应用查询特定电影时: 从 ImdbMovieID='tt0111333' 的演员中选择 *

我得到了这份清单。我的问题是我想添加一列我拥有的每个演员的电影总数。所以我不必以编程方式为每个演员运行查询

我想过用计数将同一张表加入到自身中???但我不知道这是否会奏效。让我难过的是 where 子句。

【问题讨论】:

  • 该查询实际上没有意义。您在Actors 中有一个名为ImdbMovieID 的列?如果一个演员出演过两部电影,那一栏是什么?这是一个关系表,每个演员/电影组合都列在一起吗?如果是这样,这不是一个非常直观的表名称。
  • 您在 cmets 中的 SELECT 语句中有错字;该表名为 ActorS,而不是 Actor(这就是您收到该错误的原因)。然而,正如@AaronBertrand 指出的那样,它的命名并不直观:(
  • 我很抱歉有一张我的桌子的照片,但我的代表很低,所以我不能发布它。我尝试了一个查询:我尝试了查询,认为我会更接近一点:Select ImdbActorID,cnt from Actors Join (Select ImdbActorID as Act2, count(*) as cnt from Actors group by ImdbActorID) as x on Actor.ImdbActorID=x .Act2 where ImdbMovieID='tt0111333' 我得到错误:无法绑定多部分标识符“Actor.ImdbActorID”。
  • 谢谢大家 Stuart 和 Aaron。选择 ImdbActorID, Character,Actor,ImdbMovieID,cnt from Actors Join (Select ImdbActorID as Act2, count(*) as cnt from Actors group by ImdbActorID) as x on Actors.ImdbActorID=x.Act2 where ImdbMovieID='tt0111333' order by cnt描述

标签: sql-server-2005 join count group-by distinct


【解决方案1】:

谢谢大家 Stuart 和 Aaron。

从 Actors 中选择 ImdbActorID、Character、Actor、ImdbMovieID、cnt

Join (Select ImdbActorID as Act2, count(*) as cnt 来自 Actors 组(按 ImdbActorID)作为 Actors.ImdbActorID=x.Act2 上的 x 其中 ImdbMovieID='tt0111333'

按cnt desc排序

【讨论】:

    猜你喜欢
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    相关资源
    最近更新 更多