2016-07-16 17 views
1

異なるテーブルの異なるデータ型を結合しようとしています。私は構文が正しいと思ったが、明らかに何か間違ったことをしているに違いない。異なるデータ型を持つ2つのテーブルを結合するMS ACCESS

構文エラーは、私が正しくここでデータ型

を変換するわけではないと確信しているように、発現の不一致を入力すると言い、私はなぜ()内

SELECT CLng([Inventory].ItemID) AS [Item#], 
Sum([Invoice].Quantity) AS [Order QTY] 
FROM [Invoice] INNER JOIN [Inventory] ON [Invoice].ItemID = CLng([Inventory].ItemID) 
WHERE ((([Invoice].OrderNumber) BETWEEN 1 And 23)) 
GROUP BY CLng([Inventory].ItemID); 
+0

ををstrに変換します? – scaisEdge

+0

@scaisEdge Inventory.ItemIDは文字列で、Invoice.ItemIDは数字です –

+0

なぜInventory.ItemIDをLongIntに変換しないのですか? – Andre

答えて

1

に参加しているのですか?削除しようとすると、数が

SELECT CLng([Inventory].ItemID) AS [Item#], 
Sum([Invoice].Quantity) AS [Order QTY] 
FROM [Invoice] INNER JOIN [Inventory] ON Str ([Invoice].ItemID) = [Inventory].ItemID 
WHERE [Invoice].OrderNumber) BETWEEN 1 And 23 
GROUP BY CLng([Inventory].ItemID); 

または異なるデータタイプがある

SELECT CLng([Inventory].ItemID) AS [Item#], 
Sum([Invoice].Quantity) AS [Order QTY] 
FROM [Invoice] INNER JOIN [Inventory] ON CLng(Str ([Invoice].ItemID)) = CLng([Inventory].ItemID) 
WHERE [Invoice].OrderNumber) BETWEEN 1 And 23 
GROUP BY CLng([Inventory].ItemID); 
+0

まだタイプミスマッチ、私が前にこれを試したとしても。私は余分な括弧に慣れてきました。 –

+0

ItemIDフィールドを比較すると、そのうちの1つをCLngを使用して変換しますが、もう一方は変換しません。 (インベントリ).ItemID)= CLng([インベントリ] .ItemID) – x82

+0

@ x82文字列の数値を変換し、文字列([Inventory] ​​.ItemID)を変換しました。 CLngで変換されていない – scaisEdge

関連する問題