空白をすべての可能な値として扱うクエリ

空白をすべての可能な値として扱うクエリ

次のようなテーブルがあるとします。

フィールド_1 フィールド_2 フィールド_3
B
B
B H
フィールド_1 フィールド_2
B

これらを Access のクエリ デザイン ウィンドウに取り込み、共通の名前を持つ 2 つのフィールドを結合すると、「AC」と「ZB」のレコード (合計 4 つのレコード) を表示するクエリを簡単に取得できます。

私が達成したいことは次のとおりです。2番目のテーブルの2番目のレコードで、Field_2がNull/空白であるとします。このNullフィールドを次のように解釈する方法を見つけたいです。全て可能な値 (他の結合を考慮)。現時点では、そのフィールドの値を削除して同じクエリを実行すると、明らかに「A」レコードのみが表示されます。どちらの方向でも外部結合にすると、予想どおりに希望する結果が得られません。

別の考え方としては、これを「and」と「or」のロジックを持つフィルターのように動作させたいということだと思います。これは Access で可能/簡単に実行できますか? Excel の高度なフィルターを使用してこれを実行したほうがよいでしょうか?

この例は明らかに簡略化されています。私の業界では、はるかに複雑になることがあります。このような小さなものには高度なフィルターが適していますが、私の「不完全なデータ」テーブル (ここでは Table_2 で表されます) は数万件のレコードになる可能性があり、それを拡張するために使用する必要がある「完全な」データセットは数十万件のレコードになります (少なくとも、すべての重要なデータを表形式にするクエリを実行する場合)。

この問題に以前遭遇したことがあり、解決策を知っている方がいたら嬉しいです。どんな助けでも大歓迎です。

答え1

おそらく、結合を次のように編集する必要があります。

SELECT Table1.*
FROM Table1 
INNER JOIN Table2 
ON Table2.Field_1 = Table1.Field_1
AND Table2.Field_2 = Table1.Field_2

次のようになります:

SELECT Table1.*
FROM Table1 
INNER JOIN Table2 
ON Table2.Field_1 = Table1.Field_1
AND IIF(Table2.Field_2 IS NULL,Table1.Field_2,Table2.Field_2) = Table1.Field_2

これが正確でなかったらごめんなさい。AccessCOALESCEでは使用できないと思いますが、代わりに使用すべきだと思いますIIF。残念ながら、私は長年 Access を使用していません。

とにかく、原則としては、結合を編集して「テーブル 2 のフィールド 2 が null の場合、代わりにテーブル 1 のフィールド 2 を使用する」ようにする必要があります。これにより、テーブル 1 のすべての行が一致するようになります。

関連情報