【发布时间】:2010-12-17 13:15:49
【问题描述】:
我正在尝试基于 2 个MySQL 表构建一个简单的搜索。一个称为关键字(单词),另一个称为keyword2data(将单词绑定到数据源的映射)。
Keywords 保存 id 和 keyword,而 keywords2data 保存 keyword_id 和 data_id。
data_id 它本身是对第三个但在这种情况下不重要的表的引用。
我想要的是能够搜索例如“狗拉雪橇”并获取所有绑定了这些关键字的 data_id。
SELECT k2d.`data_id` , k2d.`keyword_id`
FROM keywords2data as k2d, keywords as k
WHERE k2d.`keyword_id` = k.`id`
&& (k.`keyword` = 'dog' || k.`keyword` = 'sled')
LIMIT 10
给我所有绑定了狗或雪橇的 data_id,不需要两者,这就是我想要的。
SELECT k2d.`data_id` , k2d.`keyword_id`
FROM keywords2data as k2d, keywords as k
WHERE k2d.`keyword_id` = k.`id`
&& (k.`keyword` = 'dog' && k.`keyword` = 'sled')
LIMIT 10
什么也没给我,因为keywords2data中没有一行包含2个关键字。
这样做的正确方法是什么?
【问题讨论】:
-
正如我在问题中解释的那样,我的示例都不起作用。一个给我太多结果,一个没有给我。我只想要狗和雪橇都存在的结果。不,正如我解释的那样,使用 AND 不起作用。
标签: search mysql many-to-many