Тройной sql запрос

90
10 июля 2021, 14:00

Столкнулся с проблемой вложенности запроса. Имеются три таблицы:

  1. actors (id, name) - таблица актеров с именами.
  2. actors_video (id, id_actor, id_video) - таблица с данными о участии актера в фильме.
  3. video (id, name) - таблица с фильмами.

таблицы actors и actors_video - залиты полностью, а в таблицу video постепенно публикуются материалы.

У меня имеется страница актеров, где выводятся все актеры (с таблицы actors). Но есть нюанс, когда актер выводится, а фильмов у него нет. Поэтому вопрос, как сделать запрос когда выводятся все актеры, у которых есть минимум 5 фильмов?

Answer 1

В вашем случае между таблицами есть связи по внешним ключам и не составляет труда их сджойнить без подзапросов вовсе. И отсортировать результат

select  act.id
from actors act
join actors_video a_vid on vid.id_actor = act.id
join video vid on vid.id = a_vid.id_video
group by act.id
having count(vid.id) >= 5;
Answer 2

знакомы ли вы с группировкой GROUP BY фильтрацией групп HAVING и функциями а-ля COUNT ?

SELECT a.id, a.name
FROM actors AS a
INNER JOIN actors_video as av ON (av.id_actor = a.id) 
GROUP by a.id, a.name
HAVING count(av.id_video) >= 5
READ ALSO
Как связать таблицы в базе данных?

Как связать таблицы в базе данных?

Проектирую БД для "онлайн журнала"И запутался в связях

90
Как из строк в столбик создать json строку?

Как из строк в столбик создать json строку?

Необходимо email базу контактов, вида

158
Как правильно спарсить все адреса сайта и добавить их в базу данных?

Как правильно спарсить все адреса сайта и добавить их в базу данных?

Пишу парсер для сайта https://kladr-rfru/ 1) нужно получить все города со всех регионов и улицы со всех городов, данные о городах и улицах спарсил 2) далее...

77