用于Tag数据库的MySQL查询帮助

时间:2011-09-18 22:14:53

标签: mysql

我正在寻找使用这种规范化表结构设置标签系统:

Table: Item
Columns: ItemID, Title, Content

Table: Tag
Columns: TagID, Tag_Name

Table: ItemTag
Columns: ItemID, TagID

如果Item表是我的常规信息表,我想要做的是在我的表单中有一个额外的单个文本字段,并要求用户插入他们的标记,用逗号分隔。没有什么不同寻常的,在网络上看到的。

我需要帮助的是查询,它采用逗号分隔的输入和:

  1. 检查标签表中是否已存在
  2. 如果它们不存在(无论如何tag_id是自增量字段),添加它们
  3. 使用我的常规信息表中的ItemID链接输入的标记ID(无论是新的还是现有的)。
  4. 有人可以帮我解决每个以逗号分隔的值的循环吗?

    由于 丹

1 个答案:

答案 0 :(得分:0)

在触摸数据库之前拆分/\s*,\s*/上的标记列表,它会为您提供一组标记名称。然后标准化您的标签:强制它们为大写,小写,标题大小写,或适合您喜欢的任何一种情况。

现在您已准备好进入数据库的一些标签。不要费心检查它们是否已经存在;相反,向Tag.Tag_Name添加一个唯一索引,然后继续插入标记列表中的所有标记并捕获并忽略唯一的违规错误。

现在,您拥有数据库中的所有代码,并且可以使用INSERT ... SELECT填充ItemTag,为您要执行此操作的每个代码添加:

insert into ItemTag (ItemId, TagID)
select $item_id, TagID
from Tag
where Tag_Name = $tag

其中$item_id是相关项目的ID,$tag是您附加到项目的特定标记。