编写SQL查询以使用过滤器

时间:2016-04-02 08:16:16

标签: mysql sql

我正在尝试编写一个SQL查询,以便在网页上的过滤器中使用。该网页是一个在线食谱食谱。

如果您已登录系统并转到食谱,则只有您的用户才能看到这些食谱。

例如,假设我创建了3个配方,其中一个配有西兰花。我希望能够在配料过滤器中选择西兰花,并查看我用西兰花保存的食谱并显示它。所以我相信查询需要取2个值,即成分id和用户id,它需要检查哪个配方中含有该成分,然后如果用户创建了该配方,则需要返回配方ID,这样我们就可以了可以显示这些食谱。

目前这是我的查询。然而,它带回了用户所做的一切。

SELECT quantities.recipe_id
FROM quantities, recipes
WHERE quantities.ingredient_id = '24' AND recipes.user_id = '6'

我需要在某处加入吗?

食谱的表结构: Recipe Table Structure

数量表结构 Quantities Table Structure

2 个答案:

答案 0 :(得分:1)

是的,你需要加入。更好的查询是:

SELECT quantities.recipe_id
FROM quantities
INNER JOIN recipes ON quantities.recipe_id = recipes.recipe_id
WHERE quantities.ingredient_id = 24 AND recipes.user_id = 6

如果没有联接,您就会生成每个食谱行的产品,而不是所有的成分行。

答案 1 :(得分:0)

SELECT quantities.recipe_id
FROM quantities, recipes USING(recipe_id)
WHERE quantities.ingredient_id = '24' AND recipes.user_id = '6'

当两个表中的字段命名相同时,另一种(更短代码)连接方式。