查询匹配多个关键字并显示结果?

时间:2013-02-06 17:52:27

标签: php mysql sql search

我有一个名为cake的表,其中包含列:id,title,description,keywords。我还有一个名为keywords的表,其中cake是父项。关键字表包含两列:id和keyword。我需要编写以下两个查询:

  1. 如果一个人输入巧克力,榛子,草莓等成分(可以用逗号分隔的任意数量的关键字),我需要查询来搜索包含所有关键字并显示结果的蛋糕。仅显示包含所有关键字的蛋糕。如果没有蛋糕匹配,我需要一条消息说没有找到。

  2. 我在搜索框上有一个标签,上面写着,找到类似的蛋糕。如果某人输入Vanilla Raspberry或示例,则查询需要在数据库中找到蛋糕并将其关键字与其他蛋糕的关键字匹配并显示结果。仅显示具有相同关键字和最少三个相同关键字的蛋糕。

  3. 不确定如何编写这些查询。任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:2)

SELECT CakeID, CakeName
FROM TableName
WHERE IngredientName IN ('chocolate', 'hazelnut', 'strawberry' )
GROUP BY CakeID, CakeName
HAVING COUNT(*) = 3

如果对每个蛋糕的成分没有强制执行唯一性,请使用DISTINCT

SELECT CakeID, CakeName
FROM TableName
WHERE IngredientName IN ('chocolate', 'hazelnut', 'strawberry' )
GROUP BY CakeID, CakeName
HAVING COUNT(DISTINCT IngredientName) = 3