【发布时间】: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