在SQL WHERE子句中使用多个条件

Yoo*_*suf 1 sql where-clause

我一直在网上搜索,甚至在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');
Run Code Online (Sandbox Code Playgroud)

始终返回下面的错误消息,我已多次检查表中存在此列!

#1054 - Unknown column 'Generator.Alternator' in 'where clause'
Run Code Online (Sandbox Code Playgroud)

但是,如果我通过停在第一个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');
Run Code Online (Sandbox Code Playgroud)

新查询

    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');
Run Code Online (Sandbox Code Playgroud)

Tar*_*ryn 7

你似乎没有加入一个名为的桌子Generator.你不能在你的WHERE条款中有这个表,除非你JOIN在它上面.

如果添加JOINGenerator你就可以将在使用WHERE条款.

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

您的WHERE子句中还有其他表未JOINed打开,因此您还需要添加这些表.