2017-11-14 12 views
1

結合フィールドにNULL値を持つ可能性のある2つのテーブルをMS Accessで結合するにはどうすればよいですか?例えば、私は2つのテーブル、Table1とTable2を持っています。 [Test Field 1] = Table 2。[Test Field 1]。また、両方のテーブルのフィールドがNULLの場合は、それらを結合したいと思います。私は、以下のSQLを含めて、このことについていくつかの異なる方法を試しました。私はそれを実行しようとすると、私はエラーメッセージが表示されます: "Missing)、]、またはクエリ式のItem ..."私はブラケットなどを挿入しようとしましたが、何も働いていません。スペースをチェックしてNull MS Accessでの結合SQL

SELECT Table1.[Test Field 1], Table1.[Test Field 2], Table2.[Test Field 1], Table2.[Test Field 2] 
FROM Table1 INNER JOIN Table2 ON Table1.[Test Field 1] = Table2.[Test Field 1] 
OR (ISNULL(table1.[test field 1]) AND ISNULL(table2.[Test Field 1])); 

答えて

0

IS NULL列は、実際にnullの場合。これはあなたが使用しようとしているものかもしれません。

SELECT Table1.[Test Field 1], Table1.[Test Field 2], Table2.[Test Field 1], Table2.[Test Field 2] 
FROM Table1 
INNER JOIN Table2 ON (Table1.[Test Field 1] = Table2.[Test Field 1] 
    OR (table1.[test field 1] IS NULL AND table2.[Test Field 1] IS NULL)); 
+0

これはAccess JET/Ace SQLです。 'ISNULL'は一つのパラメータをとり、' Null'ならば 'True'を、そうでなければ' False'を 'Field Is Null'と全く同じように返します。 T-SQLでは正しいでしょう。 T-SQLの 'ISNULL'に相当するのはJET/Ace SQLの' Nz'です。 –

+0

良い点、私はオプションとしてIS NULLを表示するようにこの回答を更新し、障害のある情報を削除しました。 – danjuggler

2

以上1と比較してAccessでどれON句は括弧で包まれる必要がある。ここでは、列名の後にIS NULLを使用して、クエリがあります。残念ながら、あなたが持っているエラーメッセージはそれほど説明的ではありませんが、修正するのは簡単です。

SELECT Table1.[Test Field 1], Table1.[Test Field 2], Table2.[Test Field 1], Table2.[Test Field 2] 
FROM Table1 INNER JOIN Table2 ON (Table1.[Test Field 1] = Table2.[Test Field 1] 
OR (ISNULL(table1.[test field 1]) AND ISNULL(table2.[Test Field 1]))); 
関連する問題