MySQL从不同的表

时间:2017-07-27 13:33:10

标签: mysql mysqli

我有以下表结构:

图像
id | ...

keyword_relations
id | keyword_id | image_id

关键字
id |关键字

如果有人搜索“house”之类的内容,我如何选择。如何在搜索多个关键字时显示包含所有关键字的图片,例如'red house'(关键字'red'和关键字'house')。

我所拥有的查询效果不佳,其中一些查询速度很慢。

这在一个查询中是否可行,或者拆分它们会更好吗?

1 个答案:

答案 0 :(得分:0)

这里要求我到目前为止(简化)。首先来自关键词ids by keyword(搜索字符串爆炸):
"SELECT id FROM keywords WHERE keyword IN($keywords)"

从中我生成一个用于主查询的id列表:
"SELECT i.* FROM images i JOIN keyword_relations k ON k.image_id = i.id WHERE k.keyword_id IN($kids) GROUP BY i.id HAVING COUNT( k.keyword_id ) = $keywordcount"

COUNT甚至可用于按相关性排序,相关性是匹配关键字的数量。