Я хочу подсчитать, сколько раз «дочерний элемент» появляется в отношениях N..N, и сгруппировать результаты по полю «родителя».
Мне трудно подобрать точные слова, поэтому, скажем, у меня есть 3 таблицы: Фильм, Актер, Игра, где < em>Воспроизведение — это отношение между Фильм и Актер. Актер может сыграть в кино. Возможно, некоторые актеры есть в базе данных, но они никогда не играли ни в одном фильме из базы данных.
В таблице Movie у меня есть жанр.
Я хочу подсчитать количество актеров, сыгравших в каждом жанре, не считая одного и того же актера более одного раза в каждом жанре.
В настоящее время я использую DISTINCT для act_id для каждой пьесы, что означает, что актер, который теоретически играл несколько раз в одном и том же фильме, появится один раз... но это бессмысленный сценарий (потому что актер появится только один раз в фильме). в таблице Play), так что это бесполезно, и не то, что я хочу. Любая лучшая идея?
Я хотел бы сохранить все в одном запросе, потому что на самом деле я делаю другие подзапросы, чтобы получить другую статистику по жанрам.
Вот как выглядит мой запрос без других подзапросов:
SELECT
movie.genre,
SUM(
SELECT COUNT(DISTINCT play.actor_id)
FROM play
WHERE play.movie_id = movie.id
) AS number_of_actors
FROM movie
GROUP BY movie.genre
В настоящее время, если актер сыграл в нескольких фильмах, он будет засчитан несколько раз.
id
без соответствующей строки в таблицеplay
? - person Madhur Bhaiya   schedule 27.08.2019