Oracle sql - 引用表

时间:2016-04-06 15:06:45

标签: sql oracle select

我的学校任务是从我的电影数据库演员那里获取最高收视率的电影 我这样做了它的确有效:

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表中找到的行。 谢谢你的回答。

2 个答案:

答案 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来评估"排名"的电影,然后筛选评级最高的电影。