SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 19.07.2018 00:16:46

Vadym007
Участник
Зарегистрирован: 16.07.2018
Сообщений: 8

Фильтр товаров для интернет магазина

Имеется такая структура базы https://dropmefiles.com/rODrB
Нужно сделать выборку товаров из таблицы goods при заданной категории товара и массива значений id фильтров.
сейчас делаю так

"SELECT g.name,
                        g.alias,
                        g.price,
                        g.discount_price,
                        g.isNew,
                        images.path
                FROM goods as g
               
                JOIN
                (SELECT product_id FROM goods_filter_value as g1
                JOIN
                (SELECT id FROM values_filters WHERE id IN (:filters)) as g2
                ON g1.value_id = g2.id GROUP BY g1.product_id
                HAVING COUNT(*)= :countFilters) as g3 ON g.id = g3.product_id
   
                INNER JOIN goods_category ON g.id = goods_category.product_id
                INNER JOIN categories ON goods_category.category_id = categories.id
                INNER JOIN images ON g.id = images.product_id
               
                WHERE categories.alias = :alias
                AND images.isMain = 1"
;

Только это немного не тот результат который я хочу получить. Зараз я получаю все товары из заданной категории + этот товар имеет все заданные значения фильтров. Нужно сделать так чтобы в пределах разных фильтров товар из каждого имел минимум одно значение фильтров.
Например есть фильтры "Размер" со значениями 1,2,3,4,5 и "Цвет" со значениями красный, синий, белый, черный
Есть товар А с привязанными значениями фильтров 2,3,4,синий,черный; товар В - 1, 2, красный, синий; товар С - 4,5,белый,черный
При заданных фильтрах: 2, синий -  получаем товары А, В
                                      2, 4, синий - A,В
                                      4,5,белый,черный - А,С
                                      1,синий - В

Неактивен

 

#2 19.07.2018 22:15:07

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

Re: Фильтр товаров для интернет магазина

HAVING COUNT(distinct filter_id) = 2

Неактивен

 

#3 20.07.2018 12:39:39

Vadym007
Участник
Зарегистрирован: 16.07.2018
Сообщений: 8

Re: Фильтр товаров для интернет магазина

может я покажусь наглым, но можно пожалуйста полный запрос

Неактивен

 

Board footer

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