SQL查询混淆 - 演员,角色,电影

Kad*_*j13 0 sql sql-server

我有三张桌子:

演员

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)

但它不起作用.

我想问题就是这样我必须把"角色"放在分组中,但是因为我需要展示角色,所以我不得不这样做

我不知道如何解决这个问题.如果有人能提供帮助,我会很高兴

提前致谢

Dav*_*idG 5

您需要生成具有多个角色的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)