1

我有两张桌子

表 1 是:

id | item_id
---------------
1  | a:2:{i:0;s:1:"1";i:1;s:1:"2";}

第二个表是:

tag_id | tag
------------
1      | c
2      | java

序列化后,我已将表 2 的 id 存储在表 1 中。现在我想通过 mysql 搜索表 1 中的标签,%like%但问题是,如果我想搜索 item_id 中 id 为 1 或 2 的标签,即使我没有存储 1,它也会始终找到结果,但这是由序列化函数存储。现在我想知道我该怎么办?任何更好的方法/方法也将不胜感激!

4

1 回答 1

5

序列化数据不适合搜索。

最好改进你的表结构:

  1. 表格标签与您的相同。
  2. 表 items_tags 与结构:
    1. id - 自增字段
    2. item_id - 带有标签的项目 ID
    3. tag_id - 标签 ID

使用以下结构,搜索带有标签的项目要容易得多。

添加

Mayankswami,示例查询:对于具有指定标签的所有项目:SELECT item_id FROM items_tags WHERE tag_id=(TAG_ID)对于项目的标签:SELECT * FROM item_tags AS IT LEFT JOIN tags AS T ON T.id=IT.tag_id WHERE item_id=(ITEM_ID)

于 2012-08-13T12:57:55.970 回答