SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 01.05.2024 10:59:20

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

Запрос по свойствам и фильтрам товаров

Здравствуйте, помогите пожалуйста с запросом..

Есть несколько таблиц со свойствами товаров. Упростим до 3
1. property - названия свойств (например: мощность прибора)
id name type ...

2. property_values - значения для определённого свойства (100вт 200вт 300вт и тд.)
id property_id value

3. property_values_relations - связь значения свойства и продукта
id_product id_property id_value value

Вот давайте пока на поле value не обращаем внимание...

Приходят с клиента определенные значения свойств по которым нужно отфильтровать продукты, например:


SELECT
    id_product
FROM katalog_products pr
LEFT JOIN property_values_relations rel ON rel.id_value IN (id_начений_свойств, ...)
WHERE rel.id_product = pr.id
GROUP BY id_product
 


Выдернули продукты по определённым свойствам.

Позже стало нужно что бы фильтровали не по готовым на выбор вариантам, а по тем который указан, например пробег авто в километрах, вписывают в продукт 50000.
Для этого ввели поле value

На клиенте для таких полей стоят фильтры, два поля ОТ и ДО, например, он вписывает от 10000 - 100000

Отдельно для этих фильтров запрос такой:


SELECT
    id_product
FROM property_values_relations
WHERE
(`id_value` = 339 AND `value` BETWEEN 1996 AND 2000)
OR
(`id_value` = 341 AND `value` BETWEEN 90 AND 180)
OR ...
OR ...
GROUP BY id_product
HAVING COUNT(*) = 2
 


HAVING COUNT(*) = 2   - Количество таких фильтров

Если какой то продукт не прошёл по какому-то фильтру - от откинется.

Вот не могу додуматься как сделать запрос что бы он сначала фильтровал по id` шникам свойств, а потом откидывал те которые не прошли по диапазонным фильтрам.

Помогите пожалуйста, уже неделю пытаю mysql... Хоть совет или пример как пробовать сделать...
Спасибо.

Неактивен

 

Board footer

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