Задать вопрос
@Serjio-Grig
Тот самый никто (=

Как сделать поиск по множеству параметров?

Здравствуйте, обитатели тостера. Вновь Вам челом бью.
Натолкните на то, как сделать поиск по множеству параметров.

Например, в объявлении указывается:
1) Грузоподъемность ТС
2) Несколько типов кузова (например, "Рефрижератор", "Рефрижератор+изотерм.")
3) Несколько типов груза (например, "Строительный груз", "Мусор")

Как лучше организовать хранение всего этого в БД при создании объявления, чтобы потом искать по ПОЛНОМУ совпадению (например, вывести автомобили, у которых указано в типе кузова "Рефрижератор" и "Рефрижератор+изотерм", в типах грузов "Строительный груз" и "Мусор", при условии того, что данные опции не предустановлены и должны добавляться через админку?
  • Вопрос задан
  • 116 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
Maksclub
@Maksclub
maksfedorov.ru
Построить БД по 3 нормальной форме, у вас в упрощенном виде получится:

Таблица products с полями:
id, name, title, description,...

Таблица атрибутов features:
id, name, position, in_filter

Таблица product_features по EAV (Entity Attribute Value/Сущность-Атрибут-Значение)
с полями:
product_id, features_id, value

Тут будут привязки к продукту, характеристике и значению
Например для товара с id=1 (Грузовик) с характеристикой c id=1 (Тип кузова) и если у него 2 значений, то табличка примерно так будет выглядеть:
+------------------------------------------------------------+
|    product_id   |    feature_id     |         value        |
+------------------------------------------------------------+
|        1        |         1         |     Рефрижератор     |
+------------------------------------------------------------+
|        1        |         1         | Рефрижератор+изотерм |
+------------------------------------------------------------+


Тогда, чтобы в картчоке товара вывести все значение, нужно будет просто выбрать все характеристики по полю product_id

Для фильтра тоже самое, только вы отбирать уже будете product_id по полю features_id, и по полученному списку айдишников выводить уже данные из таблицы продуктов products
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы