我正在实施标签系统......
目前我的表格tags
包含name
,description
,createdby
字段。
包含字段images
的表tags
。在此字段中,我将从表tags
中放置标记名称,以逗号分隔。
但是,如果我想获取带有标签Foo
的所有图像,我该如何形成查询?因为该字段将包含以逗号分隔的多个标记。
答案 0 :(得分:3)
不确定您是否考虑过对图像表进行规范化,但这是最佳解决方案。
而不是
以这种方式构建你的表
然后,您可以运行此SQL语句以返回具有特定标记的所有图像
SELECT * FROM images
WHERE tags = 'forest';
或者,如果您需要将表格保留为当前格式,则可以使用
SELECT * FROM images
WHERE tags LIKE '%forest%';
上述两个示例中的“森林”一词是您要搜索的标签
答案 1 :(得分:2)
尝试类似的东西:
SELECT * FROM images WHERE tags = 'Foo' OR tags LIKE 'Foo,%' OR tags LIKE '%,Foo' OR tags LIKE '%,Foo,%'
答案 2 :(得分:0)
在tags
字段中存储代码ID,如下所示:',3,17,55,'
当您执行查询到数据库时,您将能够使用 fast 构造,如下所示:
SELECT * FROM images WHERE INSTR(tags,',$tag_id,')>'0'
而不是使用“LIKE'%$ tag_id'” slow