Как правильно сделать запрос по mysql агрегации? нужно вывести самый популярный жанр для каждого актера
Таблицы я соединил, кое-как сделал запрос , но по одному актеру и криво выводит, а надо имя актера и самый популярный жанр.
SELECT distinct a.NAME, g.NAME , count(*) as cnt FROM genre g
INNER JOIN movie_genre mg ON g.ID=mg.GENRE_ID
INNER JOIN movie m ON m.ID=mg.MOVIE_ID
INNER JOIN movie_actor ma ON m.ID=ma.MOVIE_ID
INNER JOIN actor a ON ma.ACTOR_ID=a.ID
WHERE a.ID =1
GROUP BY g.NAME
HAVING count(*) > 1;
Ответы (1 шт):
Автор решения: Виталий Злобин
→ Ссылка
Если для конкретного актёра, то можно так:
SELECT a.NAME AS Actor,
g.NAME AS Genre,
COUNT(*) AS Cnt
FROM genre g
JOIN movie_genre mg ON g.ID=mg.GENRE_ID
JOIN movie m ON m.ID=mg.MOVIE_ID
JOIN movie_actor ma ON m.ID=ma.MOVIE_ID
JOIN actor a ON ma.ACTOR_ID=a.ID
WHERE a.ID =1
GROUP BY a.NAME, g.NAME
ORDER BY Сnt DESC
LIMIT 1
