Есть замечательные способы сделать это с помощью подзапросов, но, похоже, что в этом уроке вы работаете только с JOIN. Вот как вы это сделаете, используя только JOIN:
SELECT
movie.title,
a2.name
FROM
actor AS a1
JOIN casting AS c1 ON (a1.id = c1.actorid)
JOIN movie ON (c1.movieid = movie.id)
JOIN casting AS c2 ON (movie.id = c2.movieid)
JOIN actor AS a2 ON (c2.actorid = a2.id)
WHERE
a1.name = 'Julie Andrews'
AND c2.ord = 1
РЕДАКТИРОВАТЬ (более наглядно):
Это даст нам таблицу, содержащую все фильмы, в которых принимала участие Джули Эндрюс. Я делаю псевдонимы для актеров и таблицы приведений соответственно как a1 и c1, потому что теперь, когда мы нашли список фильмов, нам придется поверните и сравните это с литейным столом снова.
SELECT
movie.*
FROM
actor a1
JOIN casting c1 ON (a1.id = c1.actorid)
JOIN movie ON (c1.movieid = movie.id)
WHERE
a1.name = 'Julie Andrews'
Теперь, когда у нас есть список всех фильмов, которые она сыграла, нам нужно соединить его с таблицей ролей (как c2) и с таблицей актеров (как a2), чтобы получить список главных ролей для этих фильмов:
SELECT
movie.title, -- we'll keep the movie title from our last query
a2.name -- and select the actor's name (from a2, which is defined below)
FROM
actor a1 -- \
JOIN casting AS c1 ON (a1.id = c1.actorid) -- )- no changes here
JOIN movie ON (c1.movieid = movie.id) -- /
JOIN casting AS c2 ON (movie.id = c2.movieid) -- join list of JA movies to the cast
JOIN actor AS a2 ON (c2.actorid = a2.id) -- join cast of JA movies to the actors
WHERE
a1.name = 'Julie Andrews' -- no changes
AND c2.ord = 1 -- only select the star of the JA film
Редактировать: в псевдонимах ключевое слово 'AS' является необязательным. Я вставил его выше, чтобы сделать запрос более понятным