[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вывод по двоим значениям одного поля
amf1k
есть 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)
а мне нужно, что бы он выводил только те фильмы, в которых играют роль оба актера???
kaww
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
amf1k
Цитата (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'
kaww
amf1k, ну да, опечатка, нужно roles.actor.
amf1k
Цитата (kaww @ 18.05.2015 - 15:40)
amf1k, ну да, опечатка, нужно roles.actor.

возвращает пустой результат!(
kaww
что-то я туплю group by movies.id smile.gif
amf1k
Цитата (kaww @ 18.05.2015 - 15:56)
что-то я туплю group by movies.id smile.gif

спасибо, теперь норм) вот ещё вариант:

SELECT * FROM `movies` WHERE `id` IN (SELECT `movie` FROM `roles` WHERE `actor` IN(1,2)
GROUP BY `movie` HAVING COUNT(*) = 2)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.