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

FRIE

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

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

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

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Надо теги хранить нормально, а не так как сделал ты.

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

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

FRIE

Новичок
Надо теги хранить нормально, а не так как сделал ты.


А потом приджоинив таблицу самих тэгов уже искать
Приджоиню допустим, а потом опять обратный порядок и пипец. Или Вы предлагаете при занесении в таблицу тегов, относящихся к строке, сортировать их по возрастанию?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
если ты просто хочешь вывести все записи, где есть 2 тега, то выбираешь их через IN(2,3), линкуешь основную таблицу, делаешь по ней DISTINCT(id) и все.

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

FRIE

Новичок
если ты просто хочешь вывести все записи, где есть 2 тега, то выбираешь их через IN(2,3), линкуешь основную таблицу, делаешь по ней DISTINCT(id) и все.

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

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Тогда тем более ты неверно все хранишь. Потому что поиск через подобный LIKE первый признак хреновой архитектуры. Если тебе надо хранить тэги, то лучше хранить их в более реляционном виде. В моем примере у тебя будет выигрыш от использования индексов, а в случае с LIKE %% - нет.
 
Сверху