• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:不一致クエリでnullまで抽出されてしまいます)

不一致クエリでnullまで抽出されてしまいます

このQ&Aのポイント
  • 現在、accessにて不一致クエリを使用し、テーブルAをチェックし、マスタテーブルに無い情報が書かれてしまっているフィールドがある場合抽出して確認をする、というクエリを作りたいと考えています。
  • 不一致クエリにて自動で入る「is null」を使用するとマスタテーブルに無い事が書いてあるレコードは抽出するのですが、is nullですので、nullのレコードも抽出されてしまいます。
  • 抽出条件として、マスタテーブルと相違するもの&nullは抽出しない、としたいのですがお知恵を拝借出来ませんでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#110201
noname#110201
回答No.1

私は不一致クエリウィザードって使ったことないので、以下想像が入っています。 まず、なぜ「is null」かという話であれば、これはまさに、相手のレコードがないものを探しているからです。 テーブルAフィールド1の内容と、テーブルBフィールド1の内容を比べるとします。次にこれでたとえば「テーブルAのすべてのレコードと・・・・」というクエリを作るとします(つまりクエリビルダでみると矢印でフィールドをつなぐやりかた)。テーブルAのすべてのレコードが表示されますが、テーブルBに該当するレコードがなければ、そのテーブルBのフィールドがNullで返ってきます。 そのNullのレコードを探すから、「is null」の条件が入ります。 次にもともとNullのレコードは除外したいというのであれば、いくつか方法があります。 まず、その不一致クエリにテーブルをそのまま使わずに、テーブルから当該フィールドの値がNullであるレコードを除外するクエリで不一致クエリをつくることです。ですから2段階にクエリを作ることになります あるいは、もとのテーブルで、Nullを別の値に置き換えてしまうのものひとつの手です。何かの文字や数値で都合が悪ければempty値にしておけばいいでしょう。以後の入力でもNullを許さないような入力画面を作るとなおよいわけです。 または、IsNullの評価を別のフィールドでするとか。主キーのように必ず値をもっているフィールドがあれば、そこでIsNullの評価をすれば、もともとNullということはないですね。

kamonegi21
質問者

お礼

わかりやすい回答ありがとうございました。 (1)is nullはフィールドではなく、「戻り値」がnullであるかどうかを判定 (2)要件を満たすにはクエリを2種使い分ければ良い このお答えのおかげで、nullフィールドを含んだクエリから さらにis not nullで絞り込めば良いという回答に行き当たりました。 残念ながらフィールドにはnullにemptyや0といった代替文字列を使用出来ませんでしたので以上の段階式の仕様で行くことにします。