2013-12-09 84 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的查詢設計器可用,請使用它來創建您的查詢。至少從設計者設置連接,因爲它知道如何創建連接以保持數據庫引擎的快樂。