Запрос, выдающий актеров, которые снимались только в оскарных фильмах - MySQL

Узнай цену своей работы

Формулировка задачи:

Нужно переделать запрос, чтобы выдавал только актеров, которые снимались только в оскарных фильмах. На данный момент запрос выдаёт всех актеров, которые снимались хотя бы 1 оскарном фильме
Листинг программы
  1. Create Function ActorsOscars()
  2. Returns table as return
  3. (
  4. Select Люди.ФИО, Люди.дата_рождения
  5. From Люди, Актерский_Состав, Оскары
  6. Where
  7. Оскары.id_фильма = Актёрский_состав.id_фильма and
  8. Актерский_состав.id_человека = Люди.id_человека

Решение задачи: «Запрос, выдающий актеров, которые снимались только в оскарных фильмах»

textual
Листинг программы
  1. Select Люди.ФИО, Люди.дата_рождения
  2. From Люди
  3. WHERE id_человека IN (
  4.   SELECT
  5.     Актерский_состав.id_человека
  6.   FROM
  7.     Актёрский_состав
  8.     LEFT JOIN Оскары ON Актёрский_состав.id_фильма = Оскары.id_фильма
  9.   GROUP BY Актерский_состав.id_человека
  10.   HAVING COUNT(DISTINCT Актёрский_состав.id_фильма) = COUNT(DISTINCT Оскары.id_фильма)
  11. )

Объяснение кода листинга программы

В этом коде происходит следующее:

  1. Внутренний запрос (вложенный в другой запрос) выбирает из таблицы Актерский_состав всех людей, которые снимались в оскароносных фильмах. Это делается путем объединения таблицы Актерский_состав с таблицей Оскары по полю id_фильма и последующим подсчетом количества уникальных id_фильма в каждой группе, образованной по id_человека. Если количество уникальных id_фильма в группе равно количеству уникальных id_фильма во всей таблице Оскары, то человек считается снимавшимся только в оскароносных фильмах.
  2. Внешний запрос выбирает из таблицы Люди ФИО и дату рождения людей, чьи id_человека присутствуют в результирующем наборе данных внутреннего запроса.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы