跨多个表搜索条件

时间:2011-12-22 17:07:17

标签: mysql

所以我有以下表格:

  • 搜索:id,查询
  • 成分:id,名称
  • IngredientsRecipes:IngredientId,RecipeId
  • 食谱:id,content,UserId,createdAt

我想做的是搜索含有某些成分的食谱。

如果我的搜索查询是“(奶酪和马铃薯)或意大利面”,那么应该返回所有含有意大利面或配有奶酪和马铃薯作为配料的食谱。

我将如何实施这样的事情?

注意:这不是搜索查询的实际外观。我还没有决定如何解决这个问题。

我不确定该问题的标题是什么;我欢迎任何更合适标题的建议。

1 个答案:

答案 0 :(得分:1)

您只需要您的IngredientsRecipes表。它包含所有相关信息。

e.g。在给定一组成分的情况下找到一组食谱:

select ir1.recipe_id from
IngredientsRecipes ir1 inner join
IngredientsRecipes ir2 on ir1.recipe_id = ir2.recipe_id
...
IngredientsRecipes irN on ir1.recipe_id = irN.recipe_id

where 
ir1.ingredient_id = 5 and
ir2.ingredient_id = 121 and
...
irN.ingredient_id = 80;

如果你想一次性进行多次查询(因为OR),那么我建议在不同的查询之间使用UNION(因为它们毕竟是单独的查询)。