我的学校任务是从我的电影数据库演员那里获取最高收视率的电影 我这样做了它的确有效:
select name,surname
from actor
where ACTORID in(
select actorid
from actor_movie
where MOVIEID in (
select movieid
from movie
where RATINGID in (
select ratingid
from rating
where PERCENT_CSFD = (
select max(percent_csfd)
from rating
)
)
)
);
输出是:
Gary Oldman
Sigourney Weaver
...但我还要添加这个精选的电影及其评级。它可以在内部选择中访问,但我不知道如何将其与外部选择连接,其中我可以使用在Actor表中找到的行。 谢谢你的回答。
答案 0 :(得分:2)
您只需要正确加入表格。之后您可以简单地添加您想要选择的列。最终选择可能看起来像这样。
select ac.name, ac.surname, -- go on selecting from the different tables
from actor ac
inner join actor_movie amo
on amo.actorid = ac.actorid
inner join movie mo
on amo.movieid = mo.movieid
inner join rating ra
on ra.ratingid = mo.ratingid
where ra.PERCENT_CSFD =
(select max(percent_csfd)
from rating)
答案 1 :(得分:0)
使用稍微不同的方法获得结果的方法可能是:
select *
from
(
select name, surname, percent_csfd, row_number() over ( order by percent_csfd desc) as rank
from actor
inner join actor_movie
using (actorId)
inner join movie
using (movieId)
inner join rating
using(ratingId)
(
where rank = 1
这使用row_number来评估"排名"的电影,然后筛选评级最高的电影。