SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.08.2017 10:11:14

matroskin8
Участник
Зарегистрирован: 04.08.2017
Сообщений: 2

Выборка по составному ключу

Добрый день.
Помогите, пожалуйста, с запросом. Есть следующая таблица с данными:


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
 

Буду рад любому другому решению smile

Отредактированно matroskin8 (04.08.2017 10:21:59)

Неактивен

 

#2 04.08.2017 13:14:08

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Выборка по составному ключу

это самое правильное

Неактивен

 

#3 04.08.2017 13:19:30

matroskin8
Участник
Зарегистрирован: 04.08.2017
Сообщений: 2

Re: Выборка по составному ключу

Спасибо)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson