次のようなテーブルがあるとします。
フィールド_1 | フィールド_2 | フィールド_3 |
---|---|---|
あ | B | だ |
あ | C | え |
あ | C | ふ |
ず | B | グ |
ず | B | H |
ず | C | 私 |
フィールド_1 | フィールド_2 |
---|---|
あ | C |
ず | 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 のすべての行が一致するようになります。