UZEIR
@UZEIR
Учусь. Пытаюсь развиваться.

Как делать выборку в базу данных?

Помогите с ходом действия.
Мне нужно сделать фильтр, по определённым характеристикам товара. Дело в том, что характеристики товара лежат в ячейке товаров в виде массива если быть точнее serilaize применял. Как мне производить выборку из базы, когда все характеристики товара лежат массивом? к примеру цвет и память. имеют такой вид
[color]-> значения
[room] -> значения
Одномерный массив, при использовании фильтра приходится все массивы закидывать в один , что в итоге образуется многомерный массив. Так каким образом мне фильтровать товары на странице?
  • Вопрос задан
  • 234 просмотра
Пригласить эксперта
Ответы на вопрос 4
@Silm
Никак. Нормализуйте данные.

Наверное поясню.

Раз вам надо делать выборки, то данные не могут лежать сериализованной кучей. Вам нужна отдельно таблица характеристик и таблица значений. Хотя, если у вас мало характеристик и значений и они не будут добавляться/изменяться можно обойтись и одной таблицей (в которой характеристики - столбцы) но это не гибко

Почитайте про нормальные формы.
Ответ написан
Комментировать
rpsv
@rpsv
делай либо хорошо, либо никак
Первый вариант (не очень):
LIKE'ом ищете значения полей (ну уверен как хранится сериализованный массив, но если значения сохраняются просто текстом, то прокатит).
-
Второй вариант:
Для каждого ключа массива PHP (color, room, ...) делайте отдельный столбец в таблице SQL.
Ответ написан
Комментировать
Храните данные в нормальном виде для начало.
Ответ написан
Комментировать
@AndryG
Переделывайте структуру БД. Косяки и проблемы вам обеспечены и они будут только хуже и их будет только больше.

Почитайте про нормализацию баз данных. Только выбрать стоит не заумную статью с мат. выкладкми, а попроще, на бытовом уровне.

Например: https://habrahabr.ru/post/193756/
Атомарность.
Правило: поля не имеют дубликатов в каждой записи и каждое поле содержит только одно значение.


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

А не помешало бы дойти до четвертой формы.
Ответ написан
Ваш ответ на вопрос

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

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