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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: вывод по двоим значениям одного поля

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
amf1k
Отправлено: 18 Мая, 2015 - 13:31:25
Post Id


Гость


Покинул форум
Сообщений всего: 110
Дата рег-ции: Май 2013  


Помог: 0 раз(а)

[+]


есть 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)
а мне нужно, что бы он выводил только те фильмы, в которых играют роль оба актера???
 
 Top
Sail
Отправлено: 18 Мая, 2015 - 13:49:34
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




amf1k, гляньте в сообщении из соседней ветки на подзапрос в join-е
 
 Top
amf1k
Отправлено: 18 Мая, 2015 - 14:02:55
Post Id


Гость


Покинул форум
Сообщений всего: 110
Дата рег-ции: Май 2013  


Помог: 0 раз(а)

[+]


Sail пишет:
amf1k, гляньте в сообщении из соседней ветки на подзапрос в join-е

не вьеду - хоть убей(
 
 Top
Sail
Отправлено: 18 Мая, 2015 - 15:19:28
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




amf1k, просто заменить названия таблиц и полей, убрать всё, что относится к третьему фильтру и внутри sum() использовать выражение `actor` = :id_actor...
Спойлер (Отобразить)
 
 Top
amf1k
Отправлено: 18 Мая, 2015 - 15:40:37
Post Id


Гость


Покинул форум
Сообщений всего: 110
Дата рег-ции: Май 2013  


Помог: 0 раз(а)

[+]


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)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB