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

Решение примера 4 на запрос SQL с текущей датой

Пример 4. Определить самого востребованного актёра за последние 5 лет.

Оператор JOIN использовать 2 раза. Использовать CURDATE(), LIMIT 1.

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

SELECT act.fname, act.lname, COUNT(tea.play_id) FROM play pl JOIN team tea ON tea.play_id=pl.play_id JOIN actor act ON act.actor_id=tea.actor_id WHERE TIMESTAMPDIFF(YEAR, pl.premieredate, CURDATE()) < 5 GROUP BY act.fname, act.lname ORDER BY COUNT(tea.play_id) DESC LIMIT 1

В результирующей таблице будут поля FNAME, LNAME, COUNT. При помощи первого JOIN данные таблиц TEAM и PLAY пересекаются по условию Play_ID. При помощи второго JOIN данные таблиц ACTOR и TEAM пересекаются по условию Actor_ID. Следует заметить, что при составлении запроса для вычисления разницы между моментами времени была использована функция TIMESTAMPDIFF(), которая присутствует в MySQL, но которой нет во многих других диалектах SQL. В них чаще всего используется фукнция DATEFIFF(), а для задания интервала вместо YEAR используются другие слова.