我正在尝试编写一个SQL查询,以便在网页上的过滤器中使用。该网页是一个在线食谱食谱。
如果您已登录系统并转到食谱,则只有您的用户才能看到这些食谱。
例如,假设我创建了3个配方,其中一个配有西兰花。我希望能够在配料过滤器中选择西兰花,并查看我用西兰花保存的食谱并显示它。所以我相信查询需要取2个值,即成分id和用户id,它需要检查哪个配方中含有该成分,然后如果用户创建了该配方,则需要返回配方ID,这样我们就可以了可以显示这些食谱。
目前这是我的查询。然而,它带回了用户所做的一切。
SELECT quantities.recipe_id
FROM quantities, recipes
WHERE quantities.ingredient_id = '24' AND recipes.user_id = '6'
我需要在某处加入吗?
答案 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'
当两个表中的字段命名相同时,另一种(更短代码)连接方式。