• 締切済み

削除クエリーについて

AテーブルとBテーブルで、Aテーブルの項目を元にBテーブルの項目と合うレコードを全て削除したい。 本では、「項目」に例えば「東京都」or「神奈川県」と云った文字を指定する場合が載っておりますが、そうではなく、テーブルの項目(フィールド)を指定するにはどうしたら良いのでしょうか?

みんなの回答

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

#1、#2です。#2は質問と関係なかったですね。 失礼しました。 #1の方法です。 ただし「テーブルA」「テーブルB」「項目」は、環境に合わせ事前に変更してください。 実在しないテーブル名・項目名ですと結果が得られません。 ここでは、実現できるようにはどのように記述するのか、を見てください。 記述の仕方が理解いただければ、次回からは6.と同じ記述をするだけです。 1.クエリの「新規作成」をクリック。 2.デザインビューを選択。 3.「テーブルの表示」がでるが、「閉じる」をクリック。 4.メニュー列左端の下の段の「ビュー」ボタン右の▼をクリックし、「SQLビュー」をクリック。 5.「SELECT;」となっているので、#1の「DELETE~中略~;」までと置き換える(コピー&ペースト) 6.4.と同じ▼をクリックし、「デザインビュー」をクリック。

  • banker_U
  • ベストアンサー率21% (17/78)
回答No.3

こんばんは リレーションってわかります? クエリーのデザインビューで、AテーブルとBテーブルを表示しておいて、Aテーブルの項目からBテーブルの項目へドラッグします。下にはAテーブルのフィールドを表示しておいて、実行! あれっ?よく読むとどっちのテーブルから削除したいのかよくわかりませんねえ。上記はAテーブルから削除するときの例ですのでご注意を。 やり方間違えると、全データが消えちゃうので必ずデータのコピーはとっておいてください。 それと、リレーションしようとすると、初めて見る人にはわけのわからない設定が出てくると思いますが、これはやってみていろいろ試してみてください。

ship1950
質問者

お礼

回答有難うございました。 試してみます。 (お礼が遅くなり申訳ないです)

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

ACCESSのクエリーで作成したデータをテーブルとして保存するには http://oshiete1.goo.ne.jp/kotaeru.php3?q=1734432

ship1950
質問者

お礼

回答有難うございました。 ホームページを参照してみましたが、今回の質問と、どう結びつくのかよくわかりませんでした(申訳ありません)。  <重複したデータを削除するにはと、ACCESSのクエリーで作成したデータをテーブルとして保存するにはとどういう風に結びつくのか?でした>

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

削除対象が入っているAテーブルはそのまま、Bテーブルの該当レコードが消えるクエリです。 DELETE * FROM Bテーブル WHERE Bテーブル.[項目] in (select Aテーブル.[項目] from Aテーブル);

ship1950
質問者

お礼

回答有難うございます。 初心者ですから、この様な処理命令をどのように記述すれば良いものか? 例えば、削除クエリーウィザードからできないのでしょうか?

関連するQ&A

  • Access 2007で、テーブルからレコードを削除するクエリを作りた

    Access 2007で、テーブルからレコードを削除するクエリを作りたい。 具体的には、テーブルAのフィールドF1とテーブルBのフィールドF2があるとします。このとき、テーブルA中の各レコード(仮にXとします)であって、そのF1の値と同じ値をF2に持つレコードがテーブルBに含まれている場合は、(テーブルAから)そのレコードXを削除するという処理をしたいのです。ややこしいと思いますが、これをクエリやマクロで作ることはできるでしょうか? 私はVBAを知らない初心者です。上の処理も文章で書くと理解してもらえるかどうか不安ですが、だれか助けて下さい。

  • Accessの削除クエリで「クエリが複雑すぎて実行できません」

    困っています。どなたかご存知の方がいらっしゃいましたらお願いしますm_ _m (1)Aクエリ(選択クエリ)とBテーブルを削除クエリでつなぐ(結合プロパティはAクエリ全件から→B) (2) (1)の削除クエリは、 B全件から(From B*) Bのフィールド40列ぐらい(数値列)を落とし、 (Where 条件「0」←数値ゼロをいれる) (3)削除クエリを実行すると、「複雑すぎて実行できません。」というエラーメッセージがでてきて実行できません。何か駄目なのでしょうか? やりたいことは、 Bテーブルを、 Aクエリにあるレコードは抽出し、のちフィールドの値が0のものは削除したいのです。 よろしくお願いします。

  • 2つのテーブルに共通するレコードを削除したい

    2つのテーブルがあり、両方にID番号フィールドが存在しています。 Aテーブルは元のデータ Bテーブルは削除したいレコードのID番号 という構成になっているとき、 AテーブルとBテーブルの共通するレコードを削除するにはどうすればよいでしょうか。 ものすごく単純な質問で申し訳ないのですが...宜しくお願いします

  • アクセス削除クエリ「複雑すぎてできません」のエラー

    テーブルA(フィールド40個)があります。 削除クエリで、From *Aテーブル(すべて) フィールド30個 について Where  0 (数字ゼロ) の条件を入れます。 これを実行すると「クエリが複雑すぎてできません」が でてきます。 フィールド30個についてすべて0のレコードを削除したいのです。 どういう条件を入れればいいでしょうか?

  • ひとつのクエリで結果を出せる?

    お世話になります。 Access2010 以下のテーブルがあります。 支社テーブル 支社名    都道府県  電話番号 支社A     東京都  03-xxxx-xxxx 支社B     大阪府  06-xxxx-xxxx 支社C     神奈川県 045-xxx-xxxx 売上テーブル 支社名 売上額 A    100円 B    500円 A    200円 A    300円 C    100円 B    600円 上記2つのテーブルを使って以下の結果を【ひとつのクエリ】で表示 させたいのですが可能でしょうか。 支社名 売上額 都道府県 電話番号 A    100円 東京都  03-xxxx-xxxx B    500円 大阪府  06-xxxx-xxxx A    200円 東京都  03-xxxx-xxxx A    300円 東京都  03-xxxx-xxxx C    100円 神奈川県 045-xxx-xxxx B    600円 大阪府  06-xxxx-xxxx 要するに、売上テーブルの支社名は略称で記載されているので、 支社テーブルの支社名を略称に変換した上で、紐づけを行う必要が あります。 支社テーブルでSwitchを用いて支社AをA、支社BをB、支社CをCに 置き換えるクエリを作成し、それと売上テーブルを紐づければ 結果を得ることはできるのですが、今回はひとつのクエリで 行いたいところです。 ご教示の程、宜しくお願い致します。

  • Access 複数テーブルの合成方法 超初心者です

    お世話になります Accessで複数のテーブルに異なるフィールドと同じフィールドが存在しています。 その複数のテーブルを一つにまとめる方法があるのでしょうか? Accessを始めたばかりで、全く持って検討がつきません 可能であれば教えてください。 「テーブル1」 番号 住所    好物 1   東京都   りんご 2   東京都   すいか 3   神奈川県  メロン 4   埼玉県   みかん 5   栃木県   梨 「テーブル2」 番号 住所    ランク 1   東京都   D 6   茨城県   C 7   大阪府   A 8   大阪府   B 3   神奈川県  E これらを下記のようにまとめたいです 番号 住所     好物   ランク 1   東京都    りんご   D 2   東京都   すいか  (空白)   3   神奈川県  メロン   E 4   埼玉県   みかん  (空白) 5   栃木県   梨     (空白) 6   茨城県   (空白)  C 7   大阪府   (空白)  A 8   大阪府   (空白)  B ※同じ番号で同じフィールドなら必ず同じ値が入ります(例 番号1の住所は必ず東京都) ※(空白)の場所は必ず空白でなくてはならない事はありません(代替なものがあれば変更可) 以上です。 何か方法があれば教えてください。よろしくお願いします。

  • エクセルの重複データを削除したい

    エクセルの重複データを削除したいです。重複項目を一つにまとめるのではなく、重複があれば、その項目を全て削除したいです。 シート処理前 ------------ 東京都 神奈川県 千葉県 埼玉県 群馬県 東京都 神奈川県 ------------ これを重複処理します。東京都と神奈川県が重複しているので削除します。 シート処理後 ------------ 千葉県 埼玉県 群馬県 ------------ このような処理をどうしても行いたいです。 実際のデータは1万件以上あり、手動では不可能でした。 どうかお知恵をお貸し頂けませんでしょうか?

  • 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 クエリについて

    Accessのテーブル1に、フィールド「コード」「回数」があり、レコードとして A,32 B,20 C,13 ・・・というように、ランダムなコードと回数がセットされているとします。コードは主キーです。 このテーブル1を元にしたクエリで A,1 A,2 A,3 ・・・ A,32 B,1 B,2 ・・・ B,20 C,1 C,2 ・・・ C,13 というように、コードごとに「回数」と同じ数のレコードがクエリ上に生成されるようにしたいのですが、こういうことは出来るのでしょうか?出来ればSQLで回答いただけないでしょうか。

  • 追加クエリでテーブル全体を指定したまま条件を追加したい

    ACCESS2000を使ってます。 追加クエリでレコード追加の元となるテーブル全体を選択してます。 クエリのフィールド:テーブル名称.*と指定していますが、テーブルに追加する条件として、西暦4桁が格納されている「NENNDO」フィールドに2006だけのレコードを追加したいです。 クエリのデザインでフィールド:テーブル名称.*と指定されている状況で「NENNO」フィールドを追加して抽出条件に2006を指定して実行すると「出力先が重複しています」と表示されます。 追加クエリの対象テーブルが沢山あって、レコード追加先がOracleとなっているのでテーブルを削除せずにACCESSの削除クエリと追加クエリでレコードの作業したいと思っております。 フィールド:テーブル名称.*としたまま、テーブルに追加する条件だけを設定する方法をご教授願います。 (フィールドは、*ではなく、フィールド全てを1つづつ指定しないといけないのでしょうか?)

専門家に質問してみよう