问题是选择在同一部电影中扮演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;
这没有打印出正确的结果,我没有看到它的问题。 谢谢你的帮助!
答案 0 :(得分:1)
由于casts
表似乎每个actor,movie和role包含一行(除非您遗漏其他列),因此只要一对唯一值aid
和{{{} 1}}出现在多行上,这意味着演员在该电影中扮演了多个角色。因此,没有理由使用mid
。另外,由于您所需的结果不包含电影名称,因此您的查询不需要也不应使用distinct
表。
如果movie
表对于(cast
,aid
和mid
的每个唯一组合只有一行,那么以下内容应该有效:
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