Задать вопрос
@entermix

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

Есть таблица:
id, name, category
Пример таблицы: (номера категорий записываются через запятую)
1 Имя1 1,2
2 Имя2 1,3
3 Имя3 1,4,5
3 Имя4 2,4,5

Понимаю, что это не правильно, но так есть.. Как выбрать все записи, категория которых относится к числу 2 и 3 например?
  • Вопрос задан
  • 297 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@bkosun
$categories = array('2', '3');
$where = 'WHERE category regexp "[[:<:]](' . implode('|', $categories) . ')[[:>:]]"';
Ответ написан
Комментировать
@whats
Читая такие комментарии, на такой простой вопрос как то даже не ловко становится. Какую структуру бд ? вы о чем ? ЗАЧЕМ !!!!! Время когда у вас база загибалась от работы со строками прошло. Сейчас даже MYSQL все это умеет, и умеет вроде как быстро делать.

У человека есть Multi-valued атрибут, это нормально, в mysql есть функция для работы с ними
SELECT FIND_IN_SET('5','3,2,4,5');

Если необходимо искать не одно значение в строке, то можно написать хранимую процедуру.

ЗАКАНЧИВАЙТЕ С ЭТИМИ ОДНОБОКИМИ ЗНАНИЯМИ ВООБЩЕ ЧТО-ТО СОВЕТОВАТЬ
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev
software engineer
Тот, кто создавал эту таблицу - рак. Категории пишутся иначе. Например в отдельных столбцах. Например в отдельных битах. Например флагами.
В вашем случае можно конечно что-то типа
selec t* from table where category ~ '%2% or category ~ '%3%'
но это рак.
Ответ написан
abler98
@abler98
Software Engineer
Лучше переделай структуру БД, а то это капец :|
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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