Базы данных
и язык SQL

Решение примера 7 на запросы с предикатом IN

Пример 7. Вывести список актеров, которые играли во всех спектаклях William Shakespeare.

Запрос будет следующим:

SELECT fname, lname FROM actor WHERE actor_id IN(SELECT actor_id FROM team WHERE play_id IN(SELECT play_id FROM play WHERE author = 'William Shakespeare'))

Один внешний запрос (по первичному ключу таблицы actor) и два подзапроса (по внешнему ключу таблицы team и по атрибуту таблицы play). Самый внутренний запрос (к таблице play) выбирает строки с play_id, соответствующие спектаклям с автором William Shakespeare. Первый подзапрос (к таблице team) выбирает строки, соответствующие ролям в спектаклях, выбранных в результате самого внутреннего запроса. И, наконец, внешний запрос выбирает актёров, соответствующих ролям, выбранным в результате подзапросов.