• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:選択クエリを基に不一致クエリを作成したけれど...)

クエリからの不一致クエリ作成できない?途方にくれています。

このQ&Aのポイント
  • あるクエリのフィールドを参考に不一致クエリで差分レコードを抽出したいが、正しく表示されず途方にくれている。
  • テーブル1とテーブル2に対して作成した2つのクエリから不一致クエリを作成し、差分を抽出したいが、うまくいかない。
  • テーブル2の最新レコードの差分をテーブル1に追加するために不一致クエリを作成したいが、方法がわからず困っている。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

比較に使用する列にキー(インデックス)があれば良く、主キーである必要はありません。 また、不一致クエリの部分に誤解があるようですね。 テーブルを簡略化して例示します。 テーブル1/テーブル2 1   / 1 2   / 2     / 3   ←これが検出されるクエリを作成する。 この場合、不一致クエリではテーブル1の側がNULLになります。テーブル2がNotNullでは1~3まですべて検出されてしまいます。 作成は以下の順序で行ってみてください。 1)テーブル1とテーブル2を追加して選択クエリを作成します。   テーブル2のすべてとテーブル1の結合列を表示させるようにします。 2)テーブル2の結合列をテーブル1の結合列にドラッグします。 3)結合で表示された線をクリックしてテーブル2のすべてが表示されるようにします。 4)ここで確認。例示の3行が表示されます。 5)追加分のみに絞ります。1)で作成したテーブル1の結合列の条件にIsNullを加えてください。 6)ここで確認。例示の3行目だけが表示されます。 7)5)でIsNullを設定した列の「表示」のレ点を外します。 8)ここで確認。例示の3行目のテーブル2の部分だけが表示されます。 9)デザインビューにしてメニューのクエリをクリックし、「追加」を選択します。対象は追加なさりたいテーブル(テーブル1?)を選択。 以上でいかがでしょうか?

xtoufux
質問者

補足

ご返答頂きありがとうございます。 実は基となるテーブルにはインデックスとなるキーが無いのです。 複数の列を組み合わせたキーを作成しないと、個別のレコードの特定が出来ません。 という返答を考えていて気付きました。 差分を抽出するだけだったら個別レコードを判別する必要は無いですよね! 基テーブルに時刻フィールドがありました。 これを基に不一致クエリを作成したら上手くいきました。 参考になりました。 それと、上記質問の様な、基がテーブルでなくクエリからでは不一致クエリは機能しないのでしょうか? [フィールド]&[フィールド]で作成したクエリのフィールドでは不一致を導き出せないのか、はたまた数字とテキストを結んだことによるデータ型の問題なのか...

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

インデックスがあるほうが有利、で良いのでは? 300万件を越えるデータを付き合わせして痛い目にあいました。 > はたまた数字とテキストを結んだことによるデータ型の問題なのか... うーん、質問文からは読み取れませんでしたね。これは影響があると思いますよ。 比較に使用する項目の条件が合いさえすれば、テーブルからでもクエリからでも不一致クエリは作成できます。 1)一致するもののみ抽出するクエリを作成 2)どちらか一方をすべて表示させ、かつ一致するものも表示するクエリに変更 3)1)の結果である「共通するもの」を除くものだけにする(2であらたに表示されたものだけにする) と確認しながらクエリを変更してみてください。

xtoufux
質問者

お礼

ありがとうございました! 次回クエリから作る事があれば試してみたいと思います。