Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Есть таблица с товаром и в ней есть 15 столбцов с характеристиками этого товара, по которым может вестись поиск (цвет, материал ...)
Есть фильтры в интернет магазинах (к примеру на Яндекс маркете и в многих других магазинах) и там в фильтре отображаются только те характеристики товара, которые уже присутствуют в размещенных в таблице товарах.
Пример: В таблице есть рубашка синего и красного цвета, размера 32 и 35, из хлопка, с пуговицами. Так вот надо чтобы и в фильтре были доступны для выбора только красные и синий цвет, только размер 32 и 35, только материал хлопок ... .
Понятно что фильтр делается средствами php. Но как узнать все уникальные значения каждого столбца. Ведь не делать 15 запросов к таблице чтобы узнать уникальные значения каждого столбца.
Т.е. вопрос такой как получить одним запросом все уникальные значения с характеристиками товара, которые содержаться в таблице.
Как это делается? В смысле, в какую сторону копать?
Причем такие фильтры очень распространены, есть ли какое-то стандартное решение? Или это надо какие-то дополнительные таблицы, но мне что-то на ум ничего не приходит адекватного...
Буду благодарен за помощь.
Неактивен
Зачем стремиться к 1 запросу? 15 запросов могут быть достаточно быстрыми.
С другой стороны, нужны не только значения каждой колонки, но и их комбинации. То есть синий только 35-ый, а красный - оба размера. Это потребует еще запросов типа:
Неактивен
Спасибо за ответ. Буду копать в этом направлении, просто не хочется терять в скорости, ее всегда не хватает))
Неактивен
Если Вы не можете представить себе простого алгоритма как это сделать, наверняка MySQL тоже не сможет. Попытки сократить число запросов очень часто приводят к тяжелым решениями и сильному снижению производительности.
Пример:
Есть книга (Война и Мир). Нужно составить: список героев, их возрастов, список упомянутых дат и список упомянутых продуктов питания.
Если решать задачу сразу, то это означает, что потребуется прочитать всю книгу и выписывать нужную информацию (аналог Full Table Scan). Если же имеются индексы по каждому параметру (именной указатель, указатель дат, указатель продуктов), то по каждому из индексов можно найти необходимое быстро.
Неактивен
billizzard написал:
Есть таблица с товаром и в ней есть 15 столбцов с характеристиками этого товара, по которым может вестись поиск (цвет, материал ...)
Есть фильтры в интернет магазинах (к примеру на Яндекс маркете и в многих других магазинах) и там в фильтре отображаются только те характеристики товара, которые уже присутствуют в размещенных в таблице товарах.
Вам лучше избавиться от 15-ти столбцов и провести нормализацию таблиц. Чтобы делать фильтры товаров как на Маркете вам потребуется выводить посетителю список возможных значений фильтров по конкретной категории товара. Потому сделайте отдельную таблицу фильтров и отдельную таблицу значений фильтров с привязкой к товарам (или отдельно таблицу значений и таблицу связки с товарами).
Неактивен
Страниц: 1