2013-05-13 27 views
0

我有一个名为tags的列的图像表。一个典型的条目将如下所示:搜索数据库中的特定标记

id link tags 
------------------- 
1  [link] funny,not-cool,work 

我有一个搜索页面,用户可以在其中输入标签以搜索图像。他们可以输入用逗号分隔的任意数量的标签

Search: funny, fall, fail 

问题是,搜索数据库中这些标签的最佳方式是什么?简单的LIKE会是吗?我知道在不同的表格中添加每个标签可能会更理想,并且不会将逗号分隔开,因此如果我需要更改标签的工作方式,我会。

+0

我觉得你回答了自己的问题。分开的行而不是像。 (ID,链接)在一个表中,和(ID,标签)在另一个 – Drew 2013-05-13 02:42:58

回答

0

在这里有多个表格可能会更好。第一个表格将被称为images,并且只有idlink。第二个表格将被称为tags,其中每行是一个特定标签,例如列idtag。第三个表格将是一个名为imagetags的连接表,其列id,imagetagimagetags中的image列将是images的外键,而tag列将是tags的外键。

使用您的示例搜索SQL会是这样的:

SELECT images.link 
FROM images 
JOIN imagetags on images.id = imagetags.image 
JOIN tags on tags.id = imagetags.tag 
WHERE tags.tag in ('funny','fall','fail')