当我尝试从多个表中选择数据时遇到了问题,我想知道是否有人可以帮助我。这些表是链接的,我试图只选择具有特定 id 的东西。我在 1 个表的查询中取得了成功,但是在 2 个表中它以我的方式踢了一个错误:
从配方获取数据的查询失败:
Recipe_ID
where 子句中的列不明确。
这是我的查询:
$query="SELECT * FROM Recipe, Ingredients_Needed WHERE Recipe_ID ='$chosen_id'";
Recipe_ID 是否同时出现在 Recipe 和 Ingredients_Needed 中?如果确实如此,那么您需要执行以下操作:
SELECT * FROM Recipe, Ingredients_Needed WHERE Recipe.Recipe_ID = ....
作为旁注,使用正确的连接语法而不是隐式连接,即:
SELECT r.*, n.*
FROM Recipe r
INNER JOIN Ingredients_Needed n ON n.Recipe_ID = r.Recipe_ID
WHERE r.Recipe_ID = ...
这将使其更加清晰,特别是如果您要加入具有不同条件的多个表等,因为您只需查看查询而不是猜测即可快速查看别名表。
指定表格:
WHERE table.Recipe_ID=
指定哪个表 receipe_id 引用:Recipe and/or Ingredients_Needed
SELECT * FROM Recipe r, Ingredients_Needed i WHERE r.Recipe_ID = x and r.Recipe_ID = x
只需用别名命名您的表并指定关系。您可能在两个表中具有相同的列名,或者在表Ingredients_Needed
列Recipe_ID
中具有多个相同的条目。所以你的 SQL 将是:
SELECT * FROM Recipe R
LEFT JOIN Ingredients_Needed I on R.ID=I.Recipe_ID
WHERE R.ID = '$choden_id'
如果您在表中Recipe
还没有ID
但有Recipe_ID
,只需更改R.ID
为R.Recipe_ID