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

到目前为止,这是我的声明:

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


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

任何帮助将不胜感激。

最佳答案

您需要正确提供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表重复相同的过程。

10-05 20:28