2013-12-09 82 views
0
SELECT Left([PTC Import].[ZipCode],5) AS Expr1, [PTC Import].[Country], [ZipCodeDatabase_STANDARD].[ZipCode] 
FROM [PTC Import] 
LEFT JOIN [ZipCodeDatabase_STANDARD].[ZipCode] ON Expr1 = [ZipCodeDatabase_STANDARD].[ZipCode] 
WHERE ((([ZipCodeDatabase_STANDARD].[ZipCode]) Is Null) AND (([PTC Import].[Country])="USA" 
FROM [PTC Import], ZipCodeDatabase_STANDARD; 

好吧,我在这里是我的尝试来比较从我的导入ZipCode字段到我们ZipCode数据库验证并确保它实际上是一个有效的邮政编码。我希望此查询显示与国家/地区为美国的有效邮政编码不匹配的任何记录。比较字段找不到匹配

我目前在JOIN语句错误消息中出现语法错误。

我有从另一个Access数据库链接ZipCode数据库,如果这会影响任何东西。

+0

什么错误BTW? – lemunk

+0

“JOIN操作中的语法错误”是我收到的消息 – Chuck

+0

啊你最后一行你不再需要它了,下面已经回答我比较好了 – lemunk

回答

3

最后一行

FROM [PTC Import], ZipCodeDatabase_STANDARD; 

不应该存在。我认为你有一个内部连接,并忘记删除它:

然后,你在与[ZipCodeDatabase_STANDARD]的左连接中出现错误,在这里你使用你在FROM中定义的别名。您应该使用Left(即[ZipCode],5),因为别名尚未定义。

此外,我为每个表添加了一个别名,以便于阅读。

它应该是:

SELECT Left(i.[ZipCode],5) AS Expr1, 
     i.[Country], 
     zs.[ZipCode] 
FROM [PTC Import] i 
LEFT JOIN [ZipCodeDatabase_STANDARD] zs ON Left(i.[ZipCode],5) = zs.[ZipCode] 
WHERE zs.[ZipCode] Is Null AND i.[Country])="USA"; 
+0

我没有语法错误了,但我没有得到记录,即使在什么时候显示邮政编码是无效的 – Chuck

+0

我不是100%确定,我明白了,但尝试添加'zs。[ZipCode]是空的ON子句,而不是WHERE。 –

+0

相同。仍然不显示无效的邮政编码,我无效的测试记录。 – Chuck

2

你的LEFT JOIN似乎试图加入一个字段的表。

FROM [PTC Import] 
LEFT JOIN [ZipCodeDatabase_STANDARD].[ZipCode] 

加入一个表到另一个表代替。也许这就是你需要的。

FROM [PTC Import] 
LEFT JOIN [ZipCodeDatabase_STANDARD] 

对于加入的ON条款,我想你想......

ON [PTC Import].[ZipCode] = [ZipCodeDatabase_STANDARD].[ZipCode] 

然后消除二次FROM条款。

如果您有Access的查询设计器可用,请使用它来创建您的查询。至少从设计者设置连接,因为它知道如何创建连接以保持数据库引擎的快乐。