Mysql Оператор LIKE - поиск нескольких значений

  • Автор темы Автор темы FRIE
  • Дата начала Дата начала

FRIE

Новичок
В базу идёт запрос на содержание тегов в поле с тегами.
LIKE '%тег1%,%тег2%'

если в таблице теги записаны по порядку вот так тег1,тег2 то строка находится
а если теги записаны в другом порядке тег2,тег1 то строка не находится.

Как сделать так чтобы он искал в независимости от порядка?
 
Надо теги хранить нормально, а не так как сделал ты.

Должно быть:
id | tag_id
1 | 2
1 | 3

А потом приджоинив таблицу самих тэгов уже искать
 
Надо теги хранить нормально, а не так как сделал ты.


А потом приджоинив таблицу самих тэгов уже искать

Приджоиню допустим, а потом опять обратный порядок и пипец. Или Вы предлагаете при занесении в таблицу тегов, относящихся к строке, сортировать их по возрастанию?
 
если ты просто хочешь вывести все записи, где есть 2 тега, то выбираешь их через IN(2,3), линкуешь основную таблицу, делаешь по ней DISTINCT(id) и все.

Не надо искать ничего через LIKE. Сама таблица тэгов нужна только, чтобы вывести их названия на экран и сформировать ссылки. Так ясней?
 
если ты просто хочешь вывести все записи, где есть 2 тега, то выбираешь их через IN(2,3), линкуешь основную таблицу, делаешь по ней DISTINCT(id) и все.

Не надо искать ничего через LIKE. Сама таблица тэгов нужна только, чтобы вывести их названия на экран и сформировать ссылки. Так ясней?

У меня не те теги. Мои теги это свойства товара =) как у яндекс маркета, это определённый тип свойств. По ним ищется строка. Сами теги не выводятся.
 
Тогда тем более ты неверно все хранишь. Потому что поиск через подобный LIKE первый признак хреновой архитектуры. Если тебе надо хранить тэги, то лучше хранить их в более реляционном виде. В моем примере у тебя будет выигрыш от использования индексов, а в случае с LIKE %% - нет.
 
Сверху