Я просматриваю учебники sqlzoo.net и пытаюсь обернуть голову вокруг подзапросов и JOIN
.При этом я пытаюсь написать один и тот же код один раз с JOIN
и один раз с подзапросами.Теперь мне интересно, могу ли я использовать подзапросы при наличии нескольких условий.
В настоящее время я работаю над вопросами 8 и 9 этой задачи. ;вверху сайта, на который я ссылаюсь, вы можете увидеть используемые таблицы.Мне удалось получить № 8 («Перечислите фильмы, в которых появился« Харрисон Форд »») правильно.
С JOIN
:
SELECT m.title
FROM movie m
JOIN casting c ON c.movieid = m.id
JOIN actor a ON a.id = c.actorid
WHERE a.name = 'Harrison Ford'
С подзапросами:
SELECT title
FROM movie
WHERE id IN (SELECT movieid FROM casting
WHERE actorid IN (SELECT id FROM actor WHERE name = 'Harrison Ford'))
Вопрос 9 такой же, но добавляет еще одно условие: не только кинозвезда ХаррисонФорд, но он также не должен быть ведущим актером.Имена актеров хранятся в таблице «актер», информация о потенциальных / не ведущих ролях находится в таблице «кастинг»
Так что с JOIN
я просто добавляю еще одно условие через AND
:
SELECT title
FROM movie m
JOIN casting c ON c.movieid = m.id
JOIN actor a ON a.id = c.actorid
WHERE a.name = 'Harrison Ford' and c.ord != 1
Как бы я сделал это с подзапросами?