Имеется таблица базы данных товаров всего из двух столбцов - id_товара, id_категория_товара. Товар может находиться в нескольких категориях. Мне необходимо сделать выборку товаров, которые входят в определенную категорию (например id_товара=64), и еще куда-нибудь, исключая тех, кто входит только в id_товара=64. Помогите, пожалуйста, советом!
Ну, например. Товар с id 133 входит в категории 64, 68, 72... А товар с id 134 входит только в категорию 64. Меня интересует первый.
@ADSoft, я так и предполагал. Но помогите сотавить запрос. Я делаю так: Код (Text): SELECT DISTINCT `product_id` FROM `table` WHERE `category_id` = 64; Вот только не понимаю, как мне добавить еще одно правило, что кроме `category_id` = 64, должны быть и другие идентификаторы. А если их нет, то нет то данный продукт не включать в выборку.
оформите тут - http://sqlfiddle.com/ таблицу, значений с десяток... и свой запрос ну а мы потом помогем
Прошу прощения, не разобрался как сохранить информацию на данном сайте. С вашего позволения запощу эти запросы здесь. Создание таблицы: Код (Text): CREATE TABLE IF NOT EXISTS `category` ( `prooduct_id` int(11) NOT NULL, `category_id` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `category` (`product_id`, `category_id`) VALUES (122, 64), (122, 65), (122, 66), (123, 64), (124, 64), (125, 64), (125, 70), (125, 18), (126, 64), (127, 64), (127, 69); Запрос: Код (Text): SELECT DISTINCT `product_id` FROM `category` WHERE `category_id` = 64
Я ж давал вам ссылку, там дано решение, всё, что нужно было сделать - подставить свои значения Код (Text): SELECT `prooduct_id` FROM `category` GROUP BY `prooduct_id` HAVING COUNT(DISTINCT `category_id`) > 1
@ADSoft, да вы правы, не вся таблица выводится, а только те продукты, которые находятся в двух и более категориях. Однако, у меня задача сделать выборку под конкретную категорию товаров, а именно category_id = 64. То есть нужны товары находящиеся в этой и еще в каких нибудь категориях. А если он находится только в этой категории, то его не показывать.
Ну так вложите этот запрос: Код (Text): SELECT `prooduct_id` FROM `category` GROUP BY `prooduct_id` HAVING COUNT(DISTINCT `category_id`) > 1 в условие например Код (Text): SELECT * FROM `category` WHERE `prooduct_id` IN ( SELECT `prooduct_id` FROM `category` GROUP BY `prooduct_id` HAVING COUNT( DISTINCT `category_id` ) >1 ) AND `category_id` =64
Уважаемые @Drunkenmunky и @ADSoft! Сердечное вам спасибо за помощь, а еще больше за просветительскую работу. Все прекрасно работает.