• ベストアンサー

Accessで重複していないデータを表示する方法

テーブルAとBがあるとします。 Aには 111、222、333、444、555…… という全データが入っていて Bには 111、333、444…… というAの中の一部データが入っています。 そこで、クエリ等を使って、テーブルAには入っているけれど テーブルBには入っていないデータを抽出したいのですが、どうすれば良いでしょうか? 集合で表すとA∩( ̄B)なことです。 使用しているソフトはAccess2007です。

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

  • ベストアンサー
  • kurageon
  • ベストアンサー率38% (15/39)
回答No.2

No.1です。 テーブルの結合時に「Aのテーブル全てに対してBのテーブル」を結合するにしてください。

その他の回答 (4)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.5

ウィザードを使うのなら不一致クエリ >A∩( ̄B) これをそのまま書くのなら フィールドの抽出条件欄に Not in (select フィールド名 from B)

gasokoa
質問者

お礼

皆さま、素早い回答ありがとうございました。 外部結合→「Is Null」で無事表示されました。 後の方も詳しく書いていただきありがとうございます。 SQL記述、参考になります。

noname#140971
noname#140971
回答No.4

既に回答が示されていますが・・・。 クエリを2段構えで作成されると容易く結果が得られると思います。 もちろん、<クエリ1>は破棄します。 <tab1> a 2 3 5 <tab2> b 2 4 5 6 >tab1には入っているけれどtab2には入っていないデータ--->3 左外部結合を作成するには、LEFT JOIN 操作を使用します。 左外部結合では、結合する 2 つのテーブルのうち 2 番目 (右側) のテーブルに対応するレコードがなくても、1 番目 (左側) のテーブルのレコードがすべて追加されます。 <クエリ1> SELECT tab1.a, tab2.b FROM tab1 LEFT JOIN tab2 ON tab1.a=tab2.b; [実行結果] a___b 2___2 3___ 5___5 <クエリ2> SELECT tab1.a FROM tab1 LEFT JOIN tab2 ON tab1.a=tab2.b WHERE tab2.b is null; [実行結果] a 3 Access2003です。

回答No.3

選択クエリでAテーブルとBテーブルを追加、リレーションの結合プロパティを、「Aの全レコード・・・」にして、Bテーブル側のフィールドの抽出条件をIs Nullにしてはどうでしょう。

  • kurageon
  • ベストアンサー率38% (15/39)
回答No.1

AとBのテーブルをクエリで結んでB側の条件に「Not Null」といれて実行してみてください。

関連するQ&A