2012-06-18 32 views
1

我一直在线上搜索,甚至包括Stackoverflow关于此问题的问题,但无法收到任何相关响应。 SQL查询,我如下图所示,在SQL 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') 
    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'); 
+0

如果你给你的答案标记该解决方案为accept!plz。 –

回答

7

它不会出现你正在加入名为Generator的表格。除非您的JOIN在上面,否则您的WHERE条款中不能包含该表格。

如果您将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条款不在JOINed其它表,所以你需要将其添加为好。

+0

+1 - where子句还引用了查询中不存在的大量其他表。 – hatchet

+0

@hatchet我也看到了。我在我的回答中加了这个。 – Taryn

+0

是的,我按照你的说法添加了它,但是它在“ON子句” – Yoosuf

0

错误的原因是您没有加入您在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'); 

你要么需要有表连接或表的别名之前,应该是名“”。

0

您不包括连接中的Generator表。要么加上它,要么你的意思是NordhavnGenset.Alternator而不是Generator.Alternator