Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
在SQLWHERE子句中使用多个条件_Sql_Where Clause - Fatal编程技术网

在SQLWHERE子句中使用多个条件

在SQLWHERE子句中使用多个条件,sql,where-clause,Sql,Where Clause,我一直在网上搜索,甚至在Stackoverflow中搜索有关此问题的问题,但没有收到任何相关回复。 下面显示的SQL查询 SELECT Scania.GensetType , Scania.EngineType , Scania.Engine60Hz , Scania.Alternator , Scania.PriceEur FROM Scania LEFT JOIN NordhavnGenset ON Scania.GensetType=Nordh

我一直在网上搜索,甚至在Stackoverflow中搜索有关此问题的问题,但没有收到任何相关回复。 下面显示的SQL查询

SELECT Scania.GensetType
    , Scania.EngineType
    , Scania.Engine60Hz
    , Scania.Alternator
    , Scania.PriceEur 
FROM Scania 
LEFT JOIN NordhavnGenset 
    ON Scania.GensetType=NordhavnGenset.Alternator 
WHERE (NordhavnGenset.MaxKva='46') 
    and (Generator.Alternator='ECP34-1LN/4') 
    and (insulation.Insulation='F (90ºC/45ºC)') 
    and (Klasse.Klasse='KRS\r') 
    and (airinletfilter.AirInletFilter='No') 
    and (Ip.IP='IP23');
总是返回下面的错误消息,我已经多次检查表中是否存在此列

#1054 - Unknown column 'Generator.Alternator' in 'where clause'
但是,如果通过在第一个Where子句处停止来执行查询,则会显示结果

SELECT Scania.GensetType
    , Scania.EngineType
    , Scania.Engine60Hz
    , Scania.Alternator
    , Scania.PriceEur 
FROM Scania 
LEFT JOIN NordhavnGenset 
    ON Scania.GensetType=NordhavnGenset.Alternator 
WHERE (NordhavnGenset.MaxKva='46');
新查询

    SELECT  Scania.GensetType, Scania.EngineType, Scania.Engine60Hz, Scania.Alternator, Scania.PriceEur
FROM Scania  
LEFT JOIN NordhavnGenset
    ON Scania.GensetType=NordhavnGenset.Alternator 
LEFT JOIN Generator
    ON Scania.Alternator=Generator.Alternator
LEFT JOIN Insulation 
    ON NordhavnGenset.Insulation=Insulation.Insulation
LEFT JOIN Klasse
    ON NordhavnGenset.Class=Klasse.Class
LEFT JOIN AirInletFilter
    ON NordhavnGenset.AirInletFilter=AirInletFilter.AirInletFilter
LEFT JOIN IP
    ON NordhavnGenset.Ip=IP.IP
WHERE (NordhavnGenset.MaxKva='46') and (Generator.Alternator='ECP34-1LN/4') and (Insulation.Insulation='F (90ºC/45ºC)') and (Klasse.Klasse='KRS\r') and (AirInletFilter.AirInletFilter='No') and (IP.IP='IP23');

您似乎没有加入名为
Generator
的表。除非在
WHERE
子句中加入
JOIN
,否则该表不能位于该子句中

如果将
JOIN
添加到
Generator
中,则可以在
WHERE
子句中使用它

SELECT *
FROM Scania 
LEFT JOIN NordhavnGenset 
    ON Scania.GensetType=NordhavnGenset.Alternator 
LEFT JOIN Generator 
    ON ....
WHERE (Generator.Alternator='ECP34-1LN/4') ...

您的
WHERE
子句中还有其他未加入
的表,因此您还需要添加这些表。

您似乎没有加入名为
生成器的表。除非在
WHERE
子句中加入
JOIN
,否则该表不能位于该子句中

如果将
JOIN
添加到
Generator
中,则可以在
WHERE
子句中使用它

SELECT *
FROM Scania 
LEFT JOIN NordhavnGenset 
    ON Scania.GensetType=NordhavnGenset.Alternator 
LEFT JOIN Generator 
    ON ....
WHERE (Generator.Alternator='ECP34-1LN/4') ...

您的
WHERE
子句中还有其他未加入
WHERE
的表,因此您也需要添加这些表。

出现错误的原因是您没有加入在
WHERE
子句中使用的表

下面的代码总是会给出一个错误-

and (Generator.Alternator='ECP34-1LN/4') 
and (insulation.Insulation='F (90ºC/45ºC)') 
and (Klasse.Klasse='KRS\r') 
and (airinletfilter.AirInletFilter='No') 
and (Ip.IP='IP23');

您需要联接表,或者表的别名应该是“.”前面的名称。

出现错误的原因是您没有联接在
WHERE
子句中使用的表

下面的代码总是会给出一个错误-

and (Generator.Alternator='ECP34-1LN/4') 
and (insulation.Insulation='F (90ºC/45ºC)') 
and (Klasse.Klasse='KRS\r') 
and (airinletfilter.AirInletFilter='No') 
and (Ip.IP='IP23');

您需要联接表,或者表的别名应该是“.”前面的名称。

联接中不包括
生成器
表。添加它,或者您可能指的是
NordhavnGenset.Alternator
,而不是
Generator.Alternator

,您没有将
Generator
表包含在联接中。添加它,或者您可能指的是
NordhavnGenset.Alternator
,而不是
Generator.Alternator

+1-where子句还引用了一大堆查询中不存在的其他表。@hatchet我也看到了这一点。我在回答中添加了这一点。是的,正如你所说,我添加了它,但是它显示未知列Scania。在“ON子句”@yoosif中,你必须确保你加入的字段包含在你添加到查询中的表中。您不能引用不正确的字段available@Yoosuf-查询中引用的每个字段必须来自联接中引用的表。在这种情况下,您似乎在说要使用表
Generator
中的
交流发电机
字段。这意味着您必须在联接中包含
生成器
表。这适用于查询中任何地方使用的每个表。+1-where子句还引用了一大堆查询中不存在的其他表。@HATCET我也看到了这一点。我在回答中添加了这一点。是的,正如你所说,我添加了它,但是它显示未知列Scania。在“ON子句”@yoosif中,你必须确保你加入的字段包含在你添加到查询中的表中。您不能引用不正确的字段available@Yoosuf-查询中引用的每个字段必须来自联接中引用的表。在这种情况下,您似乎在说要使用表
Generator
中的
交流发电机
字段。这意味着您必须在联接中包含
生成器
表。这适用于查询中任何地方使用的每个表。如果您给出答案,请将该解决方案标记为接受!如果您给出答案,请将该解决方案标记为接受!请。