Добрый день.
Помогите, пожалуйста, с запросом. Есть следующая таблица с данными:
CREATE TABLE IF NOT EXISTS `attribute_product` (
`attr_id` int(10) unsigned NOT NULL,
`product_id` int(11) unsigned NOT NULL,
PRIMARY KEY (`attr_id`,`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `attribute_product`
--
INSERT INTO `attribute_product` (`attr_id`, `product_id`) VALUES
(5, 1),
(5, 4),
(10, 4),
(5, 5),
(10, 5),
Имеется некоторое множество значений attr_id, например 5 и 10. В условии задачи необходимо выбрать только те поля product_id, у которых attr_id будет равен указанным значениям 5 и 10 одновременно. Т.е. результатом должны быть product_id 4 и 5. Первая запись не должна попасть в выборку, поскольку для нее нет attr_id = 10.
Задача, как казалось, простая, но что-то никак не дается.
Заранее благодарен за помощь.
UPD. После создания темы родилось следующее решение, которое, вроде как, работает:
select * from attribute_product2
where attr_id in (5, 10) group by product_id
having count(product_id) = 2 -- count равен кол-ву получаемых значений attr_id
Буду рад любому другому решению
Отредактированно matroskin8 (04.08.2017 10:21:59)