@lav1nia

Как правильно составить SQL запрос?

Здравствуйте. Помогите пожалуйста составить запрос. Есть таблицы: Актеры и Фильмы. Связь многие ко многим, структура БД:
film (id, name);
actor(id, name);
film_actor(id, id_film, id_actor).
Нужно составить запрос, который выберет актеров, не сыгравших ни в одном фильме.
  • Вопрос задан
  • 508 просмотров
Пригласить эксперта
Ответы на вопрос 4
@entermix
SELECT * FROM `actor` WHERE NOT EXISTS (SELECT * FROM  `film_actor` WHERE  `film_actor`.`id_actor` = `actor`.`id`)
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Если база не очень большая, то можно "в лоб"
select id from actor where id not in (
    select distinct id_actor from film_actor
)
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `actor`.`name`
    FROM `actor`
    LEFT JOIN (
        SELECT DISTINCT `id_actor` 
            FROM `film_actor`
    ) AS `infilm` ON `infilm`.`id_actor` = `actor`.`id`
    WHERE `infilm`.`id_actor` IS NULL

И если таблица `film_actor` больше ничего не содержит, то уберите из неё поле `id`. Пара (`id_film`, `id_actor`) сама по себе составляет достаточный первичный ключ.
Ответ написан
Комментировать
azrail_dev
@azrail_dev
Как вариант,
select ac.id, max(name) as name from  actor ac
left join film_actor fa on ac.id=fa.id_actor
group by ac.id
having count(*)=0;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы