MySQL来自关键字

时间:2014-10-17 14:15:26

标签: mysql sql database search keyword

我试图在MySQL中构建一个简单的搜索功能,用户可以通过输入一个或多个预定义的关键字来过滤图像。但是,每当我添加多个关键字时,我都无法获得正确的输出。

这是数据库结构的简化版本:

Table: images
- id (PK)
- title
- link

Table: keywords
- id (PK)
- keyword

Table: image_keywords
- image_id (FK)
- keyword_id (FK)

数据示例:

images:
1.     Image 1 title    http://test1.com
2.     Image 2 title    http://test2.com
3.     Image 3 title    http://test3.com

keywords:
1.     Photography
2.     Landscape
3.     Skyline

image_keywords:
1.     1.
1.     2.
2.     1.
2.     3.

所以我想要的是能够搜索 image_keywords 以查找 摄影景观的所有图片作为关键字并列出它们。但是在图像中,图像可以包含无限量的关键词。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我认为这可能是你想要的:

select i.id, i.title
from images i
inner join image_keywords ik on i.id = ik.image_id
inner join keywords k on ik.keyword_id = k.id
where k.keyword in ('Photography', 'Landscape')
group by i.id, i.title
having count(distinct k.id) = 2

Sample SQL Fiddle

答案 1 :(得分:0)

逐个图像地使用组,然后使用HAVING count = 2或您搜索的标签数量。

在这里看看Toxi Schema

http://tagging.pui.ch/post/37027745720/tags-database-schemas