我试图从3个共享相同列名的表中选择数据,我不确定如何在查询中将表连接在一起。
这是我到目前为止的陈述:
SELECT
*
FROM
recipe, recipeingredients, recipesteps
WHERE
recipe.recipe_id AND recipeingredients.recipe_id AND recipesteps.recipe_id = :recipe
这似乎只返回数据库中的所有结果,而不仅仅是那些与每个数据库的配方ID匹配的结果。我不确定如何执行表连接。
非常感谢任何帮助。
答案 0 :(得分:0)
您需要正确提供JOIN条件,如下所示:
SELECT recipe.*, recipeingredients.*, recipesteps.*
FROM recipe
JOIN recipeingredients
USING (recipe_id)
JOIN recipesteps
USING (recipe_id)
WHERE recipesteps.recipe_id = :recipe
首先加入recipe
表和recipeingredients
表,其中行具有相同的recipe_id
是表。然后使用recipesteps
表重复相同的过程。
答案 1 :(得分:0)
假设recipie_ID是组合表格的唯一键...
SELECT *
FROM recipe r
INNER JOIN recipeingredients ri
on r.Recipie_ID = RI.Recipie_ID
INNER JOIN recipesteps rs
on ri.Recipie_ID = Rs.Recipie_ID
WHERE
R.Recipie_ID = :recipie
或使用您的方法:
SELECT *
FROM recipe, recipeingredients, recipesteps
WHERE recipe.recipe_id = recipeingredients.recipe_id
AND recipeingredients.recipe_id = recipesteps.recipe_id
AND recipie.recipie_id = :recipe
答案 2 :(得分:0)
这应该有效:
SELECT
*
FROM
recipe, recipeingredients, recipesteps
WHERE
recipe.recipe_id = :recipe AND recipeingredients.recipe_id = :recipe AND recipesteps.recipe_id = :recipe