• ベストアンサー

Accessで別テーブルの重複したデータのみを抽出

初歩的な質問かもしれませんが、お願いします。 現在、テーブル1で、顧客情報を管理しています。 メールアドレスの登録もあり、その横に配信許可欄のチェック欄を設けています。 配信停止メールアドレスを、テーブル2にWEBからインポートしているのですが、テーブル2に並んでいるメールアドレスが、テーブル1のメールアドレスと重複した場合のみテーブル1のチェックボックスにチェックが入るというクエリはどのようにすればよろしいでしょうか。 更新クエリ等本を読んでみましたが、同じテーブル内の重複データのみ抽出になってしまい、別テーブルでの抽出、更新の仕方がよくわかりません。 お手数ですがご存知の方がおられましたらよろしくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

例として 社員1テーブル ID 番号 氏名 所属部 1 1 山田 営業部 2 2 大山 人事部 3 3 山下 労働部 4 4 下田 事務部 5 5 上田 営業部 6 6 今井 営業部 7 7 井上 人事部 8 8 中田 事務部 9 9 木田 営業部 10 10 北田 事務部 社員2テーブル ID 氏名 重複 1 山田 2 大島 3 下田 4 小出 5 中田 ---------------- クエリの新規で 選択クエリ 社員2 全項目選択 クエリのデザインを編集する 完了 社員2の選択ウイザードのデザイングリッドに テーブルの表示 社員1 追加で 社員1と社員2の氏名フィールドを結合する。 IDの結合はDELETE クエリ 更新 をクリックすると デザイングリッドに 「レコードの更新」行が出現する 重複フィールドの「レコード更新」行に「A」など 文字列を入れる。 実行(!) それで結果社員2は ID 氏名 重複 1 山田 A 2 大島 3 下田 A 4 小出 5 中田 A これを応用できませんか。

その他の回答 (2)

  • dober-o
  • ベストアンサー率59% (260/439)
回答No.2

文章だけではわからないところもあるのですが テーブル2にある人はテーブル1のチェックを入れる・・・とすると ふたつのテーブルの更新クエリでできます わかりにくければ 「表示」→「SQLビュー」にて以下の2行コピーしてクエリ実行 UPDATE テーブル1, テーブル2 SET [テーブル1]![check] = On WHERE ((([テーブル1]![mail])=[テーブル2]![mail])); [mail]はアドレスフィールド、[check]はチェックボックスフィールド をそれぞれ指します 結果がよければ「デザインビュー」でも確認できます なおこの更新クエリだと一度チェックが入ると二度と解除されないなので (テーブル2からなくなってもチェックは入ったまま) まず先に全部のチェックをはずす更新クエリを行う必要があります 以下も「SQLビュー」で参考になれば UPDATE テーブル1 SET [テーブル1]![check] = Off;

  • wandayu
  • ベストアンサー率24% (24/99)
回答No.1

テーブル1とテーブル2をキーとなるメールアドレスでリンクさせたクエリを作成します。 つぎに結合方法を「テーブル1の全レコードとテーブル2の同じ結合フィールドのレコードだけ求める」に変更します。 出力項目はテーブル1全内容とテーブル2のメールアドレスにします。 SORT順をテーブル2のメールアドレス順にするとテーブル2になくテーブル1にあるメールアドレスが先頭になります。 このクエリのテーブル2のメールアドレスの値を判定してあげればマークがつけられると思います。 iif([テーブル2メールアドレス]is not NULL,"●","") などとすればテーブル2、テーブル1にあるアドレスには●がつきます。応用すればチェックボックスにチェックが入るも対応できると思います。 何か不明、疑問点があればまた回答します。

関連するQ&A

専門家に質問してみよう