ACCESS 追加クエリのエラーについて教えてください

このQ&Aのポイント
  • テーブルAとテーブルBの差分を取るためのクエリで、テーブルAにあるデータをテーブルBに追加したいですが、エラーが出てしまいます。
  • エラーメッセージは『出力先’DATA'が重複しています。』です。
  • この問題は、テーブルAとテーブルBのデータが重複するために発生している可能性があります。
回答を見る
  • ベストアンサー

ACCESS 追加クエリ

二つのテーブルがあります。テーブルAには10個のデータ(A-J)、Bには5個のデータ(A-E)が記載されています。 BにはないAのデータ(F,G,H,I,J)をBに追加するクエリを作りましたが、『出力先’DATA'が重複しています。』というエラーが出ます。 二つのテーブルの差分を取っているためこのようなことになるのですが、回避する方法を教えてください。 クエリ INSERT INTO テーブルB ( DATA_B, DATA_B ) SELECT [テーブルA].DATA_A, [テーブルB].DATA_B FROM テーブルA LEFT JOIN テーブルB ON [テーブルA].[DATA_A] = [テーブルB].[DATA_B] WHERE ((([テーブルB].DATA_B) Is Null));

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

INSERT INTO テーブルB ( DATA_B ) SELECT テーブルA.DATA_A FROM テーブルA LEFT JOIN テーブルB ON テーブルA.DATA_A = テーブルB.DATA_B WHERE (テーブルB.DATA_B) Is Null; これでどうですか?

ticktak
質問者

お礼

できました! レコードの追加はBack Spaceで消すことができたのですね。 ありがとうございました。

関連するQ&A

  • Access クエリ

    INSERT INTO テーブルA SELECT * FROM テーブルB WHERE (フィールド1= 値を入力してください); 上記のような追加クエリがあります。 実行するとインプットボックスが表示されますが、 メッセージを改行して2行表示することは出来ませんか?

  • ACCESSクエリで複数テーブルの値の結合について

    現在、ACCESS2000で2つのテーブルの値を表示するクエリを作成中です。 テーブルは外部データよりインポートしています。 Aテーブル KEY1 | KEY2 | 値1 -------------------------- 00000001 | AAAAAAAA | 100 00000001 | BBBBBBBB | 200 00000002 | AAAAAAAA | 1000 Bテーブル KEY1 | KEY2 | 値1 -------------------------- 00000001 | AAAAAAAA | 500 00000002 | BBBBBBBB | 300 これを、 KEY1 | KEY2 | 値1 ------------------------------------------------ 00000001:00000001 | AAAAAAAA:AAAAAAAA | 100:500 ←(1) 00000001:NULL | BBBBBBBB:NULL | 200:NULL ←(2) 00000002:NULL | AAAAAAAA:NULL | 1000:NULL ←(3) NULL:00000002 | NULL:BBBBBBBB | NULL:300 ←(4) と表示したいのです。 INNER JOIN では、上記(1)しか表示されません。 また、LEFT JOIN では、(1)(2)(3)は表示されますが、(4)が表示されません。 SQLは下記です(INNER JOINを使用した場合) SELECT [Aテーブル.KEY1] & ":" & [Bテーブル.KEY1] AS KEY1, [Aテーブル.KEY2] & ":" & [Bテーブル.KEY2] AS KEY2, [Aテーブル.値1] & ":" & [Bテーブル.値1] AS 値1 FROM Aテーブル INNER JOIN Bテーブル ON ([Aテーブル].[KEY1]=[Bテーブル].[KEY1]) AND ([Aテーブル].[KEY2]=[Bテーブル].[KEY2]); どなかた教えてください。お願いします。

  • ACCESS2000の重複クエリ

    よろしく、お願いします。 ACCESS2000+Win2000で使用しています。 ACCESS2000の”テーブルA”の”フィールドa”の”重複クエリ甲”の結果としてX、Y、Zというデータが出たとします。 そのうち、XのみにテーブルAの”フィールドb(Yes/No型)”にフラグを立てたいのですが、良い方法はありませんか? 私は重複クエリ甲に、更新クエリで更新する事は出来ませんよね? 甲と同じく”重複クエリ乙”を作って、乙は”集計”で先頭のみを出して、甲と乙の”不一致クエリ”で差分を出してみたりもしたのですが、更新クエリを使えない為に、フラグを立てられません。 何か良い方法を教えてください。 お願い致します。

  • Access97の削除クエリーについて

    初歩的なことで もうしわけありません。チンプンカンプンです。 身の回りにある本で、削除クエリーすら捜すことが出来ませんでした。 教えてください。 宜しくお願いします。 Aテーブルから 以下の条件のレコードを削除したいです!! ※条件※ (Aテーブル.名前 = Bテーブル.名前 ) かつ、(Aテーブル.内訳 = NULL) レイアウト Aテーブル: 処理日付 → テキスト 8文字 名前 → テキスト 5文字 内訳 → テキスト 8文字 金額 → 通貨型 (テーブル数 60) などなど・・・ Bテーブル: 名前 → テキスト 5文字 で、こんな感じで 記述しました。 DELETE Aテーブル.内訳, Aテーブル.* FROM W_MB INNER JOIN Bテーブル ON Aテーブル.名前 = Bテーブル.名前 WHERE (((Aテーブル.内訳) Is Null)); すると こんなメッセージが→『更新可能なクエリーでなければなりません。』 な・なぜなのでしょう・・・

  • ACCESS クエリでの抽出の方法について

    毎度お世話になっております。 ACCESS2003、SQLSERVER2000を使用しています。 以下のテーブルがあります。 テーブル1 フィールド1   フィールド2   A        10   A        20   A        -10   B         1   B         2   B         3 フィールド1をグループ化し、 フィールド2に0より小さい数がある場合はNG、 ない場合はOKと表示したいのです。 希望する結果 フィールド1   フィールド2   A         NG   B         OK 私が考えた方法は、 1.クエリ1(フィールド2が0以下のフィールド1を抽出する)を作成 2.テーブル1とクエリ1をLEFT JOINし、IS NULL ならOK、そうでないならNGを表示 としました。希望した結果は得られましたが、 もっとスマートな方法(一つのクエリでできるような方法)、 または別解をご教授ください。 よろしくお願いします。

  • Access結合後の短いテキスト型のインデックス

    Accessの検索にて、テーブルA LEFT JOIN テーブルB で外部結合し、 WHERE句でテーブルBの短いテキスト型を抽出条件にすると、検索が遅くなります。 【テーブル定義】 テーブルA( ・年月日(日付/時刻、重複ありインデックス) ・コード(短テキスト、重複ありインデックス) ・属性あ(短テキスト、重複ありインデックス) ・属性い(短テキスト、重複ありインデックス) ) テーブルB( ・コード(短テキスト、主KEY) ・属性う(短テキスト、重複ありインデックス) ・属性え(数値、重複ありインデックス) ) 【件数】 テーブルA:15万件 テーブルB:500件 =====SQLここから===== SELECT * FROM テーブルA LEFT JOIN テーブルB ON テーブルA.コード = テーブルB.コード WHERE 属性あ IS NULL AND 属性い = 'あああ' AND 属性う = 'アアア' AND 属性え = 1 GROUP BY 年月日、 属性う =====SQLここまで===== この検索SQLは遅い(1分30秒くらい)のですが 『AND 属性う = 'アアア'』を削除すると 10秒くらいに速くなります。 ”属性う” のインデックスが効いてないように見えるのですが どのようにチューニングしたら速くなるでしょうか? エクセルからLAN越しにDAO接続してSQL実行してます。 AccessはOffice365(バージョン1902)です。

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

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

  • テーブルの結合時に空のカラムに『NULL』を入れない方法について

    宜しくお願いします。 MySQLでleft joinでテーブルの結合を行った際に、表示に必要なカラムのみを定義した場合に、空のカラムに『NULL』が入ってしまい、絞込みで検索時にこの『NULL』が邪魔になり、きちんと検索できません。left joinでテーブルを結合する場合に空のカラムに『NULL』が入らない様にする方法はありますか? クエリ文 select a.column1,b.column2 from a left join b on a.column3 = b.column3 where column2 like '%%'; 上記の様に検索した場合、likeで曖昧検索の上、検索内容を指定していないので、全データが検索されるかと思ったのですが、テーブルbのcolumn2が空のカラムは検索されず、HIT数が減ります。このwhereは必須で、どうしても入れなければならない状況なので、空のカラムも検索する方法があると助かります。 何卒、ご教授の程、宜しくお願いします。

    • ベストアンサー
    • MySQL
  • Accessの不一致クエリで

    不一致クエリでテキスト型の2桁の数値05が5となってしまいます。 ExeStr = "INSERT INTO Master (製品CD, 製品名, F_No, LineCD, 発生元, " _ & "登録年月日, 更新年月日) SELECT " _ & "NEW.製品CD," _ & "NEW.製品名, " _ & F_No & ", " _ & "NEW.部門CD AS LineCD, '" _ & syoribi & "', " _ & "#" & myDate & "#, " _ & "#" & myDate & "# " _ & "FROM NEW LEFT JOIN OLD " & _ "ON (NEW.製品CD = OLD.製品CD) " & _ "WHERE OLD.製品CD Is Null;" cn.Execute ExeStr 元のNEWテーブルのF_Noは05となっています。 MasterテーブルのF_Noの結果が05としたいのですが、5ではいってしまいます。 どうしたら良いでしょうか。 ちなみにフィールドはテキスト型のフィールドサイズ2にしています。 テーブルのNEWとOLDの不一致でOLDに無いものをMasterに追加しております。

  • T-SQLとACCESSクエリのSELECT分内のif文の利用について

    お世話になります。 ACCESSクエリからSQLServer2005のストアドに移行を検討中です。 ACCESSクエリではINSERT INTO時のSELECT内にIIF文による条件分岐が使えたのですが、T-SQLでは、INSERT INTO時のSELECT内にIF文やswitch文は使えないのでしょうか?その場合、どのようにすれば宜しいでしょうか? 例> ACCESSクエリでは以下のようにかけると思うのですが・・・ INSERT INTO Table1 (Pコード,単価) SELECT Table2.Pコード,IIf(Table2.Check定価=1,Table2.定価A*Table3.値引率,Table2.定価B*Table3.値引率) FROM Table2 RIGHT JOIN Table3 ON Table2.Pコード = Table3.Pコード; 宜しくお願いします。

専門家に質問してみよう