Задавайте вопросы, мы ответим
Вы не зашли.
Добрый вечер! Подскажите пожалуйста как можно организовать такую систему на сайте.
Необходимо отбирать записи из MySQL. У каждой строки есть свой ID, Region, Category.
В Region - хранятся список регионов данной записи через запятую, напр.: Москва, Уфа.
В Category - хранятся категории разделеные ; точкой с запятой, напр.: Конфеты;Фрукты.
Так вот пользователь выбирает в фильтре на сайте несколько значении регионов (region) и категории (category) - они формируются по той же схеме (точка запятая, просто запятые).
Вопрос, как мне отбирать записи, выводить только те у которых есть хотя бы одно из выбранных значении из перечня регионов и категории?
Отредактированно filot (13.11.2014 18:31:17)
Неактивен
Довольно сложная с точки зрения БД задача. Дело в том, что Вы выбрали не нормальную форму базы данных ( https://ru.wikipedia.org/wiki/%CD%EE%F0 … E%F0%EC%E0 ), поэтому SQL не предлагает решений.
Обойти можно примерно так. Пусть ищем катерию "книги" в колонке categories=",книги,столы,шкафы,". Такое можно сделать операцией LIKE (поиск фрагмента посредством сканирования всего текста).
WHERE categories LIKE "%,книги,%"
Важно, что список категорий начинается и заканчивается запятой. Поиск нескольких вариантов - или OR или UNION, что в обоих случаях приведет к дополнительной потере производительности.
Неактивен
rgbeast написал:
Довольно сложная с точки зрения БД задача. Дело в том, что Вы выбрали не нормальную форму базы данных ( https://ru.wikipedia.org/wiki/%CD%EE%F0 … E%F0%EC%E0 ), поэтому SQL не предлагает решений.
Обойти можно примерно так. Пусть ищем катерию "книги" в колонке categories=",книги,столы,шкафы,". Такое можно сделать операцией LIKE (поиск фрагмента посредством сканирования всего текста).
WHERE categories LIKE "%,книги,%"
Важно, что список категорий начинается и заканчивается запятой. Поиск нескольких вариантов - или OR или UNION, что в обоих случаях приведет к дополнительной потере производительности.
Спасибо за Ваш ответ, тема закрыта
Неактивен