sql select actors在同一部电影中扮演两个更独特的角色

时间:2015-04-11 04:15:02

标签: sql database sqlite

问题是选择在同一部电影中扮演2个或更多不同角色的演员。 我有3个表,演员(id,名字)电影(id,名字)和演员(援助,中间,角色)(援助是演员id,mid是电影ID) 我写了一个这样的查询

 select a.name
 from actor a, movie m, casts c
 where a.id = c.aid and m.id = casts.mid
 group by (m.name)
 having count(distinct role) > 2;

这没有打印出正确的结果,我没有看到它的问题。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

由于casts表似乎每个actor,movie和role包含一行(除非您遗漏其他列),因此只要一对唯一值aid和{{{} 1}}出现在多行上,这意味着演员在该电影中扮演了多个角色。因此,没有理由使用mid。另外,由于您所需的结果不包含电影名称,因此您的查询不需要也不应使用distinct表。

如果movie表对于(castaidmid的每个唯一组合只有一行,那么以下内容应该有效:

role

答案 1 :(得分:0)

这个怎么样?尝试执行查询时是否有任何错误?

select actor.name from actor, casts, movie 
 where casts.aid =actor.id 
   and casts.mid = movie.id
 group by movie.name, actor.name 
having count(distinct role) >= 2