MySQL从一个值查询多个表

时间:2014-06-10 19:50:09

标签: mysql multiple-tables jointable

我试图从3个共享相同列名的表中选择数据,我不确定如何在查询中将表连接在一起。

这是我到目前为止的陈述:

SELECT
    *
    FROM
    recipe, recipeingredients, recipesteps
    WHERE
    recipe.recipe_id AND recipeingredients.recipe_id AND recipesteps.recipe_id = :recipe

这似乎只返回数据库中的所有结果,而不仅仅是那些与每个数据库的配方ID匹配的结果。我不确定如何执行表连接。

非常感谢任何帮助。

3 个答案:

答案 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