【问题标题】:Query for matching multiple keyword and displaying results?查询匹配多个关键字并显示结果?
【发布时间】:2013-02-07 02:11:47
【问题描述】:

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

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

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

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

【问题讨论】:

  • 1.您是否尝试过使用IN? 2. 你试过什么?

标签: php mysql sql search


【解决方案1】:
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

【讨论】:

  • JW- 关键字搜索可以是任何成分,而不仅仅是我引用的那些成分,而不仅仅是三种。例如:香草、豆子、巧克力、甘纳许甚至巧克力、香草……我只需要结果来显示与该人输入的所有搜索词匹配的任何蛋糕
  • 有没有想过使用参数?
猜你喜欢
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
相关资源
最近更新 更多