Пример решения запроса с Left join, правильно или нет?

Рейтинг: 0Ответов: 0Опубликовано: 07.06.2023

Задача: Необходимо сделать статистику по категориям фильмов в итоговой таблице по 2 полям - категория и число фильмов категории. Число фильмов из категории отбираем по условию актер и актрис, которые снимались больше 7 раз и в фильмах после 2013г. Назвать name_category и total_films соответственно + выполнить сортировку по кол-ву фильмов от большего к меньшему и потом по полю с названием категории в лексикографическом порядке.

Просьба пояснить правильность составления запроса или как его можно улучшить, можно ли соединять таблицы напрямую? Пример решения:

    SELECT c.name AS name_category,
       COUNT(DISTINCT m.film_id) AS total_films
FROM movie AS m LEFT JOIN film_actor AS fa ON fa.film_id=m.film_id
LEFT JOIN actor AS a ON a.actor_id=fa.actor_id
LEFT JOIN film_category AS fc ON m.film_id=fc.film_id
LEFT JOIN category AS c ON c.category_id=fc.category_id
WHERE a.actor_id IN (SELECT a.actor_id
                     FROM movie AS m LEFT JOIN film_actor AS fa ON fa.film_id=m.film_id
                     LEFT JOIN actor AS a ON a.actor_id=fa.actor_id
                     WHERE m.release_year > 2013
                     GROUP BY a.actor_id
                     HAVING COUNT(a.actor_id)>7)
GROUP BY name
ORDER BY total_films DESC, name_category;

Ответы

Ответов пока нет.