最速怪談選手権

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

A 回答 (3件)

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倍速だと思います。

この回答への補足

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

補足日時:2007/08/06 16:19
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/07 11:07

質問者さんの質問内容ではテーブル名、カラム名が例示されていません。



>パラメータ telnoを求める画面がでてきます。
#1さんのテーブル名、カラム名(電話番号)は、貴方の環境のテーブル名とカラム名に変更する必要があると思いますが…?
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/07 09:16

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)

この回答への補足

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

補足日時:2007/08/06 20:00
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/06 16:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す