0

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

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

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

不知道如何编写这些查询。任何帮助表示赞赏。谢谢!

4

1 回答 1

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
于 2013-02-06T17:53:43.637 回答