Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: вывод по двоим значениям одного поля
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » вывод по двоим значениям одного поля

Страниц (1): [1]
 

1. amf1k - 18 Мая, 2015 - 13:31:25 - перейти к сообщению
есть 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)
а мне нужно, что бы он выводил только те фильмы, в которых играют роль оба актера???
2. Sail - 18 Мая, 2015 - 13:49:34 - перейти к сообщению
amf1k, гляньте в сообщении из соседней ветки на подзапрос в join-е
3. amf1k - 18 Мая, 2015 - 14:02:55 - перейти к сообщению
Sail пишет:
amf1k, гляньте в сообщении из соседней ветки на подзапрос в join-е

не вьеду - хоть убей(
4. Sail - 18 Мая, 2015 - 15:19:28 - перейти к сообщению
amf1k, просто заменить названия таблиц и полей, убрать всё, что относится к третьему фильтру и внутри sum() использовать выражение `actor` = :id_actor...
Спойлер (Отобразить)
5. amf1k - 18 Мая, 2015 - 15:40:37 - перейти к сообщению
Sail пишет:
amf1k, просто заменить названия таблиц и полей, убрать всё, что относится к третьему фильтру и внутри sum() использовать выражение `actor` = :id_actor...
Спойлер (Отобразить)

вот вариант без JOIN )
SELECT * FROM `movies` WHERE `id` IN (SELECT `movie` FROM `roles` WHERE `actor` IN(1,2) GROUP BY `movie` HAVING COUNT(*) = 2)

 

Powered by ExBB FM 1.0 RC1