Напишите запрос, чтобы найти полное имя актера, снявшегося в максимальном количестве фильмов. - PullRequest
0 голосов
/ 01 августа 2020

Мой код показан ниже, но я не получаю желаемого ответа, а именно получения полного имени актера, снявшего максимальное количество фильмов.

SELECT CONCAT(" ",actor.first_name,actor.last_name) AS Full_name 
FROM actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id
GROUP BY actor.actor_id
ORDER BY count(film_actor.actor_id) DESC
LIMIT 2, 1;

введите описание изображения здесь

1 Ответ

1 голос
/ 01 августа 2020

Ваш запрос должен делать то, что вы хотите, но вам нужно исправить предложение limit. Если вам нужен один актер с большинством фильмов, вам понадобится limit 1, а не limit 2, 1. concat() в предложении select также необходимо исправить - вам нужен пробел между именами, а не перед ими.

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

select concat(a.first_name, ' ', a.last_name) as full_name
from actor a
order by (select count(*) from film_actor fa where fa.actor_id = a.actor_id) desc
limit 1

Обратите внимание, что ни ваш запрос, ни этот не учитывают возможность лицевых связей. В вашем вопросе это не уточняется. Если это то, что здесь нужно, тогда стратегия будет другой - но, похоже, это не то, о чем вы просили.

...