Необходимо сформировать SQL-запрос на выборку объектов для фильтрации списка на ajax (по принципу Entity-Attribute-Value)
Есть таблица объектов, как в интернет-магазинах. У объекта есть параметры, например, цвет, мощность, материал и т.п.
Все названия параметров сохранены в таблице fields. В ней сохранены все характеристики данных доп.полей (ширина поля, стиль, тип поля его ЧПУ название, допустимые варианты значений и т.п.)
А данные, которые относятся к определенному объекту сохраняются в 3-ю таблицу data. В ней сохраняются id поля, id объекта, выбранное значение. Если у параметра выбрано несколько значений (например, цвета), то они указываются через разделитель "|" (red|black|blue). (поиск через REGEXP ). Или например, такой параметр, как "вес, кг" то указана цифра, "15.5". И т.д.
Поиск примерно такой:
выбрать id объектов, где цвет (name_cpu) равен красный|синий И мощность (name_cpu) более 500Вт И ( вес менее 2,5 кг ИЛИ вес более 1 кг )
Возникла необходимость выборки объектов, у которых выбрано сразу несколько параметров, т.е. фильтрация идет по суммированию параметров. Если делать по условию "OR", то это суммирование объектов по какому-нибудь совпадению, что неправильно. А нужно, чтобы круг поиска сужался.
Примерная структура таблиц:
db_data:
id, object_id, fields_id, values
db_fields:
id, name, catid, name_cpu (ЧПУ-название параметра)
Результат: SQL-запрос, который выводит список строк id объектов (далее он будет выбираться из таблицы объектов), помощь в виде ответов на вопросы (если понадобится) при реализации запроса в проекте (вдруг ошибки какие-то возникнут на практике). Запрос должен быть разумным, быстрым, без лишней нагрузки на сервер.
Более подробные данные исполнителю.
Интересует цена.
Опубликован 28.05.2016 в 16:12