@FLASH911

Как сделать вывод из базы MySql записей, у которых в строке-перечислении содержится значение?

Есть некая таблица MySQL, в которой содержатся записи. В одном из стобцов содержатся числа, перечисленные через запятую и пробел, например: 1, 2, 3, 8, 12 в одной записи и 2, 4, 5, 10 в другой. Необходимо вывести, например, только те записи, у которых в данном столбце содержится 1 (в данном примере первую). Сейчас используется LIKE, но на мой взгляд это крайне не рационально и оказывает большую нагрузку на сервер. Хотелось бы узнать, как это можно реализовать наиболее правильно и без дополнительных таблиц MySQL (требуется сделать к уже существующей базе с большим количество записей).

Сейчас так:
$variable1 = trim($value).",%";
$variable2 = trim($value);
$variable3 = "% ".trim($value).",%";
$variable4 = "% ".trim($value);
$where="pos LIKE '$variable1' or pos LIKE '$variable2' or pos LIKE '$variable3' or pos LIKE '$variable4'";
$query="SELECT * FROM  $post_m WHERE ( $where ) ORDER BY date_s DESC";
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 3
VladimirAndreev
@VladimirAndreev
php web dev
FIND_IN_SET
Ответ написан
Комментировать
KarleKremen
@KarleKremen
Игнорирую Bootstrap
Так будет очень неудобно и долго. Заведите три таблицы: объектов, значений и связей. Каждому обьекту и значению свой ID -> в таблицу связей отношения objectID<->valueID
UPD: виноват, не прочитал про доп. таблицы
Ответ написан
Комментировать
@res2001
Developer, ex-admin
При ваших условиях like - самое то.
По уму нужно нормализовать таблицу как предлагает Карл Кремень .
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы