Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql where子句不明确_Mysql_Sql - Fatal编程技术网

Mysql 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是否同时出现在配方和所需配料中? 如果确实如此,那么您需要执

当我试图从多个表中选择数据时遇到了一个问题,我想知道是否有人可以帮助我。这些表是链接的,我试图只选择具有特定id的内容。我成功地查询了1个表,但在2个表中,我发现了一个错误:

从配方中获取数据的查询失败:where子句中的列
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您可以得到不需要成分的回复。如果只使用
内部联接
则只会得到需要的行