есть 2 таблицы фильма(movies) и роли в фильме(roles)
структура movies:
id, title
структура roles
movie - айди фильма
actor - айди актера, игравшего роль в этом фильме
вопрос - нужно вытащить все фильмы, где играют роль 2 определенных актера(например актер - айди 1 и айди 2)
есть запрос, который выводить все фильмы 2 этих актеров
SELECT `title` FROM `roles` LEFT JOIN `movies` ON `roles`.`movie`=`movies`.`id` WHERE `actor` IN(1,2)
а мне нужно, что бы он выводил только те фильмы, в которых играют роль оба актера???
SELECT `title`, count(1) as cnt FROM `roles` LEFT JOIN `movies` ON `roles`.`movie`=`movies`.`id` WHERE `actor` IN(1,2) group by actor.actor having cnt = 2
Цитата (kaww @ 18.05.2015 - 15:04) |
SELECT `title`, count(1) as cnt FROM `roles` LEFT JOIN `movies` ON `roles`.`movie`=`movies`.`id` WHERE `actor` IN(1,2) group by actor.actor having cnt = 2 |
группировка не проходит пишет ошибку
Unknown column 'actor.actor' in 'group statement'
amf1k, ну да, опечатка, нужно roles.actor.
Цитата (kaww @ 18.05.2015 - 15:40) |
amf1k, ну да, опечатка, нужно roles.actor. |
возвращает пустой результат!(
что-то я туплю group by movies.id
Цитата (kaww @ 18.05.2015 - 15:56) |
что-то я туплю group by movies.id |
спасибо, теперь норм) вот ещё вариант:
SELECT * FROM `movies` WHERE `id` IN (SELECT `movie` FROM `roles` WHERE `actor` IN(1,2)
GROUP BY `movie` HAVING COUNT(*) = 2)
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.