我有三张桌子:
演员
id
nameofactor
Run Code Online (Sandbox Code Playgroud)
电影
id
nameOfmovie
Run Code Online (Sandbox Code Playgroud)
铸
actorid
movieid
role
Run Code Online (Sandbox Code Playgroud)
我想展示在电影中扮演多个角色的演员的名字
这是我尝试过的:
select
nameOfactor, nameOfmovie, CASTS.role
from
ACTOR, MOVIE, CASTS
where
ACTOR.id = CASTS.actorid
and CASTS.mid = MOVIE.movieid
group by
fname, lname, name, role
having
count(pid) >= 2;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我想问题就是这样我必须把"角色"放在分组中,但是因为我需要展示角色,所以我不得不这样做
我不知道如何解决这个问题.如果有人能提供帮助,我会很高兴
提前致谢
您需要生成具有多个角色的actor列表,然后使用它来连接回表以获取角色.
首先获取具有多个角色的actor列表:
SELECT actorid, movieid
FROM CASTS
GROUP BY actorid, movieid
HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)
现在,您可以将其用作子查询,并将JOIN
其用于其他表:
select nameOfactor, nameOfmovie, CASTS.role
from ACTOR
JOIN CASTS
ON ACTOR.id=CASTS.actorid
JOIN MOVIE
ON CASTS.mid=MOVIE.movieid
JOIN (SELECT actorid, movieid
FROM CASTS
GROUP BY actorid, movieid
HAVING COUNT(*) > 1) A MultiRoles
ON MultiRoles.actorid = CASTS.actorid
AND MultiRoles.movieid = CASTS.movieid
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
180 次 |
最近记录: |