Я бы рекомендовал использовать нормализацию данных (http://www.bkent.net/Doc/simple5.htm)., если вы храните теги в строковых форматах, таких как «тег a, тег b, тег c и т. Д.», Тогда вам нужно выбрать каждый тег в БД, разбить их намассивы и сопоставьте их, чтобы найти релевантные данные.
Я бы порекомендовал составить таблицу для Предметов и другую для Тегов, которая будет расти по мере добавления новых тегов, а затем третья таблица, отображающая item_id втег. Как только это будет сделано, вы можете выбрать на основе определенных тегов и групп тегов, чтобы получить результаты.
|Item_table |
|-------------------------|
|item_id | Desc |
|1 | Event |
|2 | Ticket Booking |
|-------------------------|
|Tag_Table |
|------------|
|id | tag |
|1 | Rugby |
|2 | Blue |
|Tag_Map |
|-------------------------|
|id | tag id | item id |
|1 | 1 | 1 |
|2 | 1 | 2 |
Вы должны создать индекс в таблице карт и таблице тегов.так:
SELECT it.Desc FROM Item_Table it, Tag_Table tt, Tag_Map tm WHERE tt.id = tm.tag_id AND it.item_id = tm.item_id and (tt.tag = "Rugby" or tt.tag = "Blue");
вам нужно будет только изменить последнюю часть в () на один тег или продолжать добавлять «или» и другой тег, который даст вам все описания элементов, соответствующие любому данному тегу.
Я знаю, что управление тремя таблицами выглядит много, но, поверьте мне, если ваша таблица элементов и таблица тегов начнут расти до десятков тысяч, то вы (и ваш сервер MySQL)цените этот стиль хранения данных.