В таблице хранится строка вида '1,2,10,12,30'
. Здесь прописываются группы пользователя. Как проверить подходит ли данная группа этому пользователю? Например группа 1 должна подходить для '1,2,11
' но не для '11,21'
, поэтому LIKE
не подходит. Какие еще есть варианты? 11 IN(uedb_specializations)
работает,только если строка начинается с данного числа.
Самое правильное решение - завести таблицу `groups' и там хранить все группы отдельно. Тогда решение становится элементарным.
Неправильное решение обрамить строку запятыми и использовать LIKE
SELECT * FROM mytable WHERE CONCAT(',', groups, ',') LIKE '%,1,%'
Это будет работать медленно и печально. Заведите дополнительную таблицу USER_GROUPS
. В ней должны быть колонки
ID | ID_USER | ID_GROUP
Потом посадите на нее уникальный индекс по полям ID_USER, ID_GROUP и все у вас будет шикарно работать.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть запрос выводящий все заказыВ таблице teh_otdel есть 6 отделов, и сейчас они все выводятся
В БД (в 5-ти таблицах одновременно, суммарно примерно 20000 строк) осуществляется живой поиск:
В базе хранится дата и время в виде 2012-09-25 12:31:130 Правильно я понимаю, что на самом деле содержимое просто так отображается, но хранится в формате...