2013-02-06 65 views
0

我有一个名为蛋糕的表,其中包含列:标识,标题,描述,关键字。我也有一个名为关键字的表格,蛋糕是父母。关键字表格包含两列:id和关键字。我需要编写以下两个查询:查询匹配多个关键字并显示结果?

  1. 如果成分,如巧克力,榛子,草莓的人的类型(可以是任何数量的用逗号分隔的关键字),我需要查询搜索的蛋糕是包含所有关键字和显示结果。仅显示包含所有关键字的蛋糕。如果没有蛋糕匹配,我需要一个消息说没有发现。

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

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

+0

1.你使用'IN'试过吗? 2.你有什么尝试? – Kermit

回答

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 
+0

JW-关键字搜索可以是任何成分,不仅仅是我引用的那些成分,而且不仅仅是三种成分。例如:香草,豆,巧克力,甘纳什,甚至巧克力,香草......我只需要结果显示任何蛋糕匹配所有搜索条件人进入 – user1913714

+0

你有没有想过使用参数? –