Mysql where子句不明确
当我试图从多个表中选择数据时遇到了一个问题,我想知道是否有人可以帮助我。这些表是链接的,我试图只选择具有特定id的内容。我成功地查询了1个表,但在2个表中,我发现了一个错误: 从配方中获取数据的查询失败:where子句中的列Mysql where子句不明确,mysql,sql,Mysql,Sql,当我试图从多个表中选择数据时遇到了一个问题,我想知道是否有人可以帮助我。这些表是链接的,我试图只选择具有特定id的内容。我成功地查询了1个表,但在2个表中,我发现了一个错误: 从配方中获取数据的查询失败:where子句中的列Recipe\u ID不明确 我的问题是: $query="SELECT * FROM Recipe, Ingredients_Needed WHERE Recipe_ID ='$chosen_id'"; 配方ID是否同时出现在配方和所需配料中? 如果确实如此,那么您需要执
Recipe\u ID
不明确
我的问题是:
$query="SELECT * FROM Recipe, Ingredients_Needed WHERE Recipe_ID ='$chosen_id'";
配方ID是否同时出现在配方和所需配料中? 如果确实如此,那么您需要执行以下操作:
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 = ...
这将使它更清晰,尤其是当您连接具有不同条件的多个表时,因为您只需查看查询而不是猜测即可快速查看别名表。配方ID是否同时显示在配方和配料中? 如果确实如此,那么您需要执行以下操作:
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=
指定表格:
WHERE table.Recipe_ID=
指定receipe_id所指的表:所需配方和/或成分
SELECT * FROM Recipe r, Ingredients_Needed i WHERE r.Recipe_ID = x and r.Recipe_ID = x
指定receipe_id所指的表:所需配方和/或成分
SELECT * FROM Recipe r, Ingredients_Needed i WHERE r.Recipe_ID = x and r.Recipe_ID = x
只需使用别名命名表并指定关系即可。您可能在两个表中都有相同的列名,或者在表
所需配料
列配方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\u ID
,只需更改R.ID
的R.Recipe\u ID
,只需使用别名命名表并指定关系即可。您可能在两个表中都有相同的列名,或者在表所需配料
列配方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\u ID
,只需将R.ID
更改为R.Recipe\u ID
主题外,但确保$choosed\u ID
变量正确转义,否则您将容易受到SQL注入攻击,但请确保您的$choosed\u id
变量已正确转义,否则您将容易受到SQL注入攻击。我也建议进行此更改:选择配方。*,需要的配料。*
我也建议进行此更改:选择配方。*,需要配料。*
使用此SQL,您可以获得不需要配料的配方。如果您只使用内部联接
您只会得到行,如果存在需要的成分,那么使用此SQL您可以得到不需要成分的回复。如果只使用内部联接
则只会得到需要的行