2

外部クエリからサブクエリにアクセスする方法について完全に理解していないため、この質問について助けが必要です。ここに 4 つのスキーマがあります。

Movie(title, year, director, budget, earnings)
Actor(stagename, realname, birthyear)
ActedIn(stagename, title, year, pay)
CanWorkWith(stagename, director)

映画の出演料が最も高い俳優の名前を見つけてください。私が得た情報によると、各映画で最も高給取りの俳優を見つけるように求めています...しかし、よく考えてみると、ブラケットは、誰が最も高給取りで、カップルが同じ金額を持っている可能性があることを示している可能性があります。いずれかの方法..

私が持っているもの

SELECT A.realname
FROM ActedIn A
WHERE A.stagename IN ( SELECT A1.title, A1.year, MAX(pay)
                       FROM ActedIn A1
                       GROUP BY title, year )

WHERE A.stagename IN が完全に間違っていることはわかっています。それを元に戻す方法がわかりません。

4

2 に答える 2

2

私がよく理解していれば、これで十分です:

SELECT A.realname
FROM ActedIn A
WHERE pay = (SELECT MAX(pay) FROM ActedIn B WHERE B.stagename = A.stageman)
于 2012-06-11T23:12:02.383 に答える
1

サブクエリの概念は単純です。それは単なる視点の問題です。サブクエリを記述すると、処理されるのは最初のセグメントです。外部クエリの前に完全に処理されるため、サブクエリの出力は外部クエリにとって意味のあるものでなければなりません。上記で提供した例では、

SELECT A.realname FROM ActedIn A WHERE A.stagename IN 
( SELECT A1.stagename FROM CanWorkWith A1 ) 

このクエリを実行すると、CanWorkWIth からの stagename が最初に処理され、stagename が出力として提供されます。A.stagename を期待している外側のクエリは、この値を受け取り、外側のクエリが実行されます。

サブクエリの書き方に制限はありません。

ポイントを理解していただければ幸いです。サブクエリがどのように機能するかを理解したので、問題を自分で解決し、新しい SQL でここに質問することをお勧めします。幸運を。

于 2012-06-11T23:06:21.147 に答える