我一直在网上搜索,甚至在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');
发布于 2012-06-18 23:35:54
看起来您不是在名为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
on的表,因此也需要添加这些表。
发布于 2012-06-18 23:36:15
错误的原因是您没有联接在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');
您需要联接该表,或者该表的别名应该是“.”前面的名称。
发布于 2012-06-18 23:36:30
您没有在联接中包含Generator
表。要么添加它,要么用NordhavnGenset.Alternator
代替Generator.Alternator
https://stackoverflow.com/questions/11086064
复制相似问题