0

私はhttp://sqlzoo.net/wiki/Main_Pageでmysql クエリを練習していて、結合に関するこの特定のクエリに出くわしました。質問 :「ジュリー・アンドリュース」が出演したすべての映画のタイトルと主演俳優を挙げてください。 表の構造 :

movie   : id,title,yr,director,budget,gross -------
actor   :id,name ----------
casting :movieid,actorid,ord

ヒント: 主要な俳優は、キャスティング テーブルで ord が 1 の俳優です。これまでの私の答え: 「ジュリー アンドリュース」が出演したすべての映画の映画 ID と俳優 ID を取得できます。しかし、その結果セットを使用すると、わかりません。異なるテーブルにあるタイトルと名前を取得する方法。

これまでの私のクエリ:

select c1.actorid,c1.movieid 
from casting c1 
where c1.movieid in 
(
   select movieid from casting 
   join  actor on (id=actorid and name='Julie Andrews')
) and c1.ord=1
4

4 に答える 4

0

はい、代わりに join を使用する必要があります。

      select c1.actorid, c1.movieid 
        join casting c2 on c2.movieid = c1.movieid
        join  actor a on a.id=c2.actorid
      from casting c1 
        where c1.ord=1 and
              a.name='Julie Andrews'
于 2013-10-15T12:36:39.303 に答える
0

これが古いスレッドであることはわかっていますが、私のようにまだ助けを求めている人のために、Shankar から少し離れてこれを使用しました。お役に立てれば。

SELECT title, name 
FROM movie JOIN casting ON (movie.id = casting.movieid) 
           JOIN actor ON (actor.id = casting.actorid)
WHERE movieid IN (SELECT movieid 
                  FROM casting JOIN actor ON (actor.id = casting.actorid)
                  WHERE name = 'Julie Andrews') 
                  AND ord = 1
于 2016-03-25T06:20:34.830 に答える
0

学習課題として、クエリをステップに分割する必要があります。

ステップ 1. 映画のタイトルを一覧表示する

SELECT movie.title AS title
FROM movie

ステップ 2. ジュリー・アンドリュースが出演した映画を挙げてください:

SELECT movie.title AS title
FROM movie
JOIN casting
  ON movie.id = casting.movieid
JOIN actor
  ON casting.actorid = actor.id
WHERE actor.name = 'Julie Andrews'

ステップ 3. 主役。ここから、問題解決がどのように機能するかに応じて、ソリューションを変えることができます。

主演俳優の名前だけ知りたい場合。クエリは次のようになります。

SELECT actor.name as Name 
FROM casting
JOIN actor
  ON actor.id = casting.actorid
WHERE casting.ord =1

ただし、これを試してみると:

SELECT movie.title AS title
FROM movie
JOIN casting
  ON movie.id = casting.movieid
JOIN actor
  ON casting.actorid = actor.id
WHERE actor.name = 'Julie Andrews'
  AND casting.ord =1;

ジュリー・アンドリュースが主演俳優である場所を見つけているだけです。

代わりに、actor テーブルに再び参加する必要があります (テーブルを結合する目的を説明するのに役立ついくつかのテーブル エイリアスを追加します)。

SELECT movie.title AS title, LeadActor.name AS LeadActorName
FROM movie
JOIN casting AS JulieCastings
  ON movie.id = JulieCastings.movieid
JOIN actor AS JulieAndrews
  ON JulieCastings.actorid = JulieAndrews.id
JOIN casting AS LeadActorCastings
  ON LeadActorCastings.movieid = movie.id
JOIN actor AS LeadActor
  ON LeadActor.id = LeadActorCastings.actorid
WHERE JulieAndrews.name = 'Julie Andrews'
  AND LeadActor.ord =1;
于 2013-10-15T12:32:29.780 に答える