• ベストアンサー

ACCESS テーブルを見比べて、一致しないレコードを追加したいです

ACCESSで、以下のようにデータを追加をしたいです。 別々のテーブルで、データの一致しないものだけ追加したいです。 どのようにすればよいのでしょうか? Aテーブル、Bテーブル共に入力項目は全て同じです。 よろしくお願いします。  Aテーブル      Bテーブル    名前 個人データ  名前 個人データ   ・鈴木 ***     ・近藤 ***    ・近藤 ***     ・伊藤 ***   ・渡辺 ***     ・鈴木 *** 求める答え   ・鈴木 ***     ・近藤 ***    ・渡辺 ***   ・伊藤 *** たぶん、不一致クエリでBテーブルの伊藤さんだけ取り出して、Aテーブルに追加するという方法がやりやすいのでしょうか? よろしくお願いします。

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

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

>不一致クエリでBテーブルの伊藤さんだけ取り出して、 >Aテーブルに追加するという方法がやりやすいのでしょうか? 考え方としてはこの方法でいいのですが この方法でやるとたぶん名前が重複しているというエラーになります 上のようにして作ったクエリをSQLビューで表示したのが下です INSERT INTO Aテーブル ( 名前, 個人データ, 名前 ) SELECT Bテーブル.名前, Bテーブル.個人データ, Aテーブル.名前 FROM Bテーブル LEFT JOIN Aテーブル ON Bテーブル.名前 = Aテーブル.名前 WHERE (((Aテーブル.名前) Is Null)); 確かに抽出条件として使った名前まで記入されています これがエラーの原因ですからこれを削除してやります INSERT INTO Aテーブル ( 名前, 個人データ ) SELECT Bテーブル.名前, Bテーブル.個人データ FROM Bテーブル LEFT JOIN Aテーブル ON Bテーブル.名前 = Aテーブル.名前 WHERE (((Aテーブル.名前) Is Null));

その他の回答 (1)

noname#140971
noname#140971
回答No.1

クエリを3つ作成するのが一番簡単かと・・・。 1、クエリ1 SELECT * FROM A UNION SELECT * FROM B; 2、クエリ1とAとの差分 SELECT クエリ1.名前, クエリ1.個人データ FROM クエリ1 LEFT JOIN A ON クエリ1.名前 = A.名前 WHERE (((A.名前) Is Null)); 3、クエリ2 INSERT INTO A SELECT * FROM クエリ1とAとの差分;

関連するQ&A

  • Accessにてテーブル追加時の連番

    Accessにて、個人ごとの販売管理をするようなメイン/サブフォーム形式のフォームを作成しました。 テーブルA(メインフォーム用テーブル) ●個人CD ●氏名 ●住所  ・  ・ テーブルB(サブフォーム用テーブル) ●連番(個人CDごとに取得するよう設定) ●日付 ●個人CD ●商品CD ●個数  ・  ・ フォームにて入力する場合、連番は自動で取得するようなVBAを書いています。 追加クエリA ●日付 ●個人CD  ・  ・ ※1回の追加では、ひとつの個人CDに対して、1件分のデータ。 追加クエリAにより、テーブルBにまとめてデータを追加したい場合、 連番をどのようにして取得してよいか分かりません。 連番は、個人CDごとに振るようにしたいのですが、どのようにしたらよいでしょうか? よろしくお願いいたします。

  • ACCESS テーブルを見比べて、一致したレコードを抽出したいです

    ACCESSで、以下のデータ抽出をしたいです。 別々のテーブルで、番号の一致したものだけ取り出したいです。 どのようにすればよいのでしょうか? よろしくお願いします。  Aテーブル     Bテーブル   ・001 ***     ・002 ***    ・002 ***     ・004 ***   ・003 ***     ・001 *** 求める答え   ・001 ***     ・002 *** 

  • アクセス2007 クエリの作り方

    アクセス2007 クエリの作り方 テーブルA 氏名  生れ年 ---------------- 佐藤   1990 鈴木   1950 斎藤   2000 伊藤   1970 テーブルB ------------------ 年齢   項目 10    少年 20    成人 60    還暦 とあった時 テーブルAを元に「クエリ1」で「年齢」を追加し 年齢: Year(Date())-[生れ年]としました クエリ1 氏名  生れ年 年齢 -------------------- 佐藤   1990  20  鈴木   1950  60 斎藤   2000  10 伊藤   1970  40 更に、「テーブルB」の年齢と「クエリ1」の年齢をリレーション(多対1?)して「クエリ2」としました。 クエリ2 氏名  生れ年 年齢 項目 --------------------------- 佐藤   1990  20 成人 鈴木   1950  60 還暦 斎藤   2000  10 少年 伊藤   1970  40「空欄」 アクセスはまだ良く理解していないのですが、これだとレコードの更新ができません。 フォームでレコードセットを「ダイナセット (矛盾を許す)」にすると更新はできますが不安です。 こんな時「ダイナセット (矛盾を許さない)」で行い場合どんなリレーションにしたら良いのでしょうか?    

  • 【Access】部分一致で不一致データを抽出したい

    クエリで2つのテーブルから、不一致データを抽出したいのですが、 完全一致だけでなく部分一致のデータも一致データとして取り除きたいです。 [テーブルA]フィールド1 000-0001 000-0001A 000-0002 000-0003 000-0004 [テーブルB]フィールド2 000-0001 000-0002 というようなデータで、結果は [結果] 000-0003 000-0004 というふうにしたいです。 (000-0001だけでなく000-0001Aというデータも取り除きたいのです。) Access初心者で、クエリウィザードを使用した重複データ抽出、不一致データ抽出、 およびクエリデザインを使用した重複データ抽出が何とかできる程度です。 初心者でも分かるようにご回答いただければ大変助かります。 よろしくお願いいたします。

  • ACCESSで他のデータベースと不一致を探したい

    ACCESSで見積を作っています。 パソコンAの見積テーブルとパソコンBの見積テーブルを比較し、 パソコンBにパソコンAの見積データを移行させたいのですが。 比較対象は見積No1というコード。 Aでは1A、2A、3A… Bでは1B、2B、3B… となっており、 不一致クエリ、差分を追加すれば、 Bには、1B、2B、1A、3Bと、Aのデータもまとめられると思ったのです。 ただ、問題は、AとBは別のパソコン。 不一致クエリ、ネットワーク上のを探せない。 アドバイスお願い致します。

  • ACCESSのテーブルのデータ追加VBA

    (サーバーのORACLEのデータベースに追加) ACCESSのAテーブルのデータをBテーブルに追加する。追加クエリを使わずVBAで作成したいのですが、どうすればよいのでしょうか。 追加クエリだと件数が多いのか、タイムアウト、ログオーバーのような エラーになってます。 A,Bテーブルは同じレイアウトです。 Bテーブルは空です。 また、サンプルが出ているようなサイトを探しているのでですが どこか良いACCESS専用の質問サイトがありますか。 ACCESS CLUBはなんだか私には使いづらいので他のサイトがあれば宜しくお願いします。

  • アクセスの追加クエリについて

    二つのテーブル間(AとB)を追加クエリを使い AからレコードをBに追加することは出来たんですが、 逆にBからAにレコードを追加しようと選択クエリを追加クエリに変更しようとしたんですが、ウィザードの追加先テーブル名にAのテーブル名が表れないですがその理由が全く分からないので分かる方教えていただけませんか? AとBのレコード内のフィールドは同じです。 AからBにレコードを移行する処理としてマクロを使いアクションとして ・クエリを開く(これは追加クエリです) ・SQLの実行(上と同じクエリを削除クエリに変更し、そのSQL文をSOLステートメントに貼り付けました) 上の処理は問題なく出来たので逆のBからAへレコード移行処理のマクロを作ろうとしたのですが、追加クエリの追加先テーブルにテーブルAの名前が出てこないので困っています。こういったAからB。BからAという処理は追加クエリで出来ないのでしょうか?

  • テーブルAにテーブルBのレコードをすべて追加

    いつもお世話になっております。 現在、テーブルAとテーブルB(エクセルのリンクテーブル)の2つのテーブルがあり、テーブルBのレコードをすべてテーブルAに追加するという追加クエリを作りました。 が、「0件が追加されました。」とメッセージが出てしまい、実際に追加することができません。 フィールド:国番号 テーブル:テーブルB 並べ替え: レコードの追加:テーブルA.国 抽出条件: 条件は以上のようなものを、各カラムについて書きました。 テーブルAとテーブルBが逆かな?と思い逆にもしてみましたが、同じ結果となりました。 そもそも追加クエリというのは、このような目的で使うものではないのでしょうか? どなたかご教授願います。 以上、よろしくお願いいたします。

  • テーブルに新しいレコードを追加する方法について

    ACCESS2007を使っています。 フィールドに以下のような項目があるテーブルAがあります。 日付 | 名称 | 項目 | MIN(数値) | MAX(数値) | チェック(Yes/No) また、以下のような項目があるテーブルBがあります。 日付 | 名称 | 項目 | ナンバー(数値) このテーブルAに以下のようなデータが入っているとして 1/1 | あああ | いいい | 10  | 100 | No 1/1 | あああ | ううう | 1 | 20 | Yes テーブルBに以下のようにレコードを追加したいのです。 1/1 | あああ | いいい | 10   1/1 | あああ | いいい | 11    ・  ・  ・ 1/1 | あああ | いいい | 100 1/1 | あああ | ううう | 1 1/1 | あああ | ううう | 2   ・  ・  ・ 1/1 | あああ | ううう | 20 1/1 | あああ | ううう | blank  最終的には、テーブルBをソースとしてラベル印刷したいと思っています。 レコードセットとFor~Nextなどを使えばできそうな気がするのですが、???です。 どなたかご指南いただけませんでしょうか?

  • アクセスで重複するレコードを追加しない方法

    条件 Office97のアクセスを利用しています。 (会社のPCなので古いものしかありません) すでに作成されたデータベースがあります。 この中に、複数のテーブル・クエリ・他(フォームやマクロなど)があります。 分かる範囲でこのデータベースを触る許可はいただいています。 ただし、テーブルや保存の方法、データ型などの基本しかわからない初心者です。 状況 今回は、あるテーブルにデータを大量に追加したいと思っています。 その際、重複する(複数条件)データは追加しないようにしたいのです。 例えば、 【テーブルA】 オートナンバー   コード   場所   納場        001   AA001   東京    A           002   AA001   東京    B           003   AA001   東京    C           004   BB001   大阪    A           005   BB001   大阪    B    【テーブルB】             コード   場所   納場                AA001   東京    B                AA001   東京    C           → AA001   東京    D                  BB001   大阪    B 上記のテーブルが2つあり、テーブルAを元に、テーブルBのデータを追加する場合、 【テーブルA】 オートナンバー   コード   場所   納場        001   AA001   東京    A           002   AA001   東京    B           003   AA001   東京    C             AA001   東京    D           004   BB001   大阪    A           005   BB001   大阪    B というように表を更新したいと思っています。 上記の表のように「コード」が一致しても「納場」が一致しなければ追加を行いたいのです。 方法をご教授ください。

専門家に質問してみよう