• ベストアンサー

ACCESSの削除処理

AファイルとBファイルを電話番号で関連づけして関連づけされたBファイルのレコードを削除したいのですがACCESSのクエリ削除ではどうすればよいのでしょうか。AとBは1対1の関係です。 宜しくおねがいします。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.2

AとBが1対1で関連付けられたレコードならば、質問の通りならばBを全て削除。 ならば、 DELETE FROM B; で事足ります。 そうでなくと、B独自のレコードは残すのであれば No1さんのやり方。 ただし、サブクエリが苦手であれば、かって知ったる DLookup関数でも。 DELETE * FROM B WHERE TEL=DLookup("TEL","A","TEL='" & TEL & "'"); フィールド:TEL テーブル:B レコードの削除:Where 抽出条件:DLookup("TEL","A","TEL='" & TEL & "'") でも同じこと。 ただし、DLookup関数の実行速度はチト遅くなります。 No1さんの回答が3倍速だと思います。

UKUJIMA
質問者

お礼

削除クエリのフィールド:~抽出条件に入力しているのですが、削除するレコードを含んだテーブルを指定してください。とでてきます。 入力している場所が違うのでしょうか。

UKUJIMA
質問者

補足

>AとBが1対1で関連付けられたレコードならば、質問の通りならばBを全て削除。 すいません 言葉たらずで、キーの対応は1対1ですが、BにはAにないデータがあります。 DLookup 知りませんでした。新たに知識を頂けありがとうございます。

その他の回答 (2)

  • x0000x
  • ベストアンサー率52% (67/127)
回答No.3

質問者さんの質問内容ではテーブル名、カラム名が例示されていません。 >パラメータ telnoを求める画面がでてきます。 #1さんのテーブル名、カラム名(電話番号)は、貴方の環境のテーブル名とカラム名に変更する必要があると思いますが…?

UKUJIMA
質問者

お礼

自分の環境のテーブル名とカラム名に変更しているのに出てくるということは、正しく設定されていないということですね。 なんどもありがとうございます。

回答No.1

SQL文ならこれでいけますが、クエリは苦手で・・・参考までに DELETE FROM TABLE_B WHERE TABLE_B.TELNO = (SELECT TABLE_A.TELNO FROM TABLE_A,TABLE_B WHERE TABLE_A.TELNO = TABLE_B.TELNO)

UKUJIMA
質問者

お礼

ありがとうございます。早速試してみます。

UKUJIMA
質問者

補足

パラメータ telnoを求める画面がでてきます。Aファイルに存在する電話をBファイルから一気にバッチで削除したいのですが、自分のパンチミスでしょうか。

関連するQ&A