2016-04-06 17 views
0

私の学校のタスクは、最も高い評価 と映画の中で遊ぶ私の映画データベース俳優から名前を得ることだった私はそれをこのように作られ、それが動作します:のOracle SQL - 参照テーブル

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 

...しかし、私はこの選択された映画とその評価に追加したいと思います。それは内部の選択肢でアクセス可能ですが、私はアクターテーブルで見つかった行だけで動作することができる外部の選択とそれを結合する方法を知らない。 ありがとうございます。

+2

次に、テーブルを適切に選択し、テーブルのサブ選択を行う代わりにテーブルを結合します。 – SomeJavaGuy

+0

サンプルコードを投稿してください。おかげで – s0re

答えて

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) 
+0

は完璧に動作します、ありがとう:) – s0re

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 

これは、映画(S)の「ランク」を評価し、その後のためにフィルタリングするrow_numberを使用しています最も高い評価の映画。

関連する問題