質問 |
||
| QNo.3579989 | DELETEでテーブル削除方法 | |
|---|---|---|
| 質問者:NeilMania |
テーブルA、テーブルB、テーブルCがあります。 テーブルA テーブルB テーブルC --------------------------------- 個人ID 個人ID なし --------------------------------- テーブルAに等しい個人IDをテーブルBから 削除をし、テーブルCにテーブルAのIDが存在すれば テーブルCを削除し、存在しなければテーブルA、テーブルB の個人IDを削除しようと考えています。 SQLでテーブルAとBを比較して削除をし テーブルAとテーブルCを削除すれば出来ると思うのですが 他にいい方法があればご教授お願い致します。 |
|
困り度:
|
||
| 質問投稿日時: 07/12/08 00:45 |
||
回答 |
|
| ANo.3 | ごめんなさい。 言われていることとやりたいことが、私の頭の中でかみ合わなくなってきたような気がしてます。 回答2の補足はテーブルCのDelete条件ですよね。 テーブルCはテーブルAのIDと同じレコードが削除になりますね。 それはいいです。 存在しなければ削除しようがないですね。それもいいです。 でも、テーブルAはそのID(テーブルCに存在しないID)のレコードを削除するのですよね。 そこをどうしようとしているのかがわからなくて、回答2の質問になりました。 >削除されない(テーブル)に対してSQLを実行するのはプログラム上良くないですかね… 削除される対象が絶対に存在しない状態のテーブルに対してDelete条件のSQLを発行することを指しているのなら、良くないとは言いませんが「処理時間の無駄」ですよね。 |
|---|---|
| 回答者:assault852 | |
| 種類:補足要求 どんな人:専門家 自信:参考意見 |
|
| 回答日時: 07/12/10 22:40 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| ANo.2 | すみません。一旦リセットさせてください。 テーブルB、テーブルCはテーブルAと同じIDという条件でDeleteできますが、テーブルAに対して、テーブルCに存在しなかったIDというのは、どうやって判定するつもりですか。 |
|---|---|
| 回答者:assault852 | |
| 種類:補足要求 どんな人:専門家 自信:参考意見 |
|
| 回答日時: 07/12/09 14:26 |
|
| |
| この回答への補足 | DELETE * FROM TABLEC WHERE ID IN(SELECT * FROM TABLEA WHERE TABLEA.ID = 5) の間違いです。 |
| この回答へのお礼 | メッセージありがとうございます。 SELECT * FROM TABLEC IN (SELECT * FROM TABLEA WHERE ID = 5) としてテーブルCにIDが存在しなければ削除されないので 問題ないと思っていたのですが… 削除されないに対してSQLを実行するのは プログラム上良くないですかね… |
回答 |
|
| ANo.1 | テーブルCに存在しなければ、AもBも削除するのですから、先にテーブルAとCの比較をした方がよくないですか。 テーブルAとCを比較 → Cに存在する → Cから削除 → Cに存在しない → AとBから削除 次にテーブルAとBを比較 → Bに存在する → Bから削除 |
|---|---|
| 回答者:assault852 | |
| 種類:回答 どんな人:専門家 自信:参考意見 |
|
| 回答日時: 07/12/08 10:32 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | ご連絡遅くなりました。SQL初心者のため ずっと考えておりました。 'テーブルAとCを比較 'Cに存在する場合Cから削除 DELETE FROM TABLEC where ID IN (SELECT * FROM TABLEA where TABLE.ID = 5) 'テーブルA,Bを比較 'Bに存在するBから削除 DELETE FROM TABLEB where ID IN (SELECT * FROM TABLEA where TABLE.ID = 5) ' テーブルA削除(アドバイスどおりではないと思います) DELETE FROM TABLEA WHERE TABLEA.ID = 5 アドバイスを頂いた通りは、出来ませんでした… ここまでSQLを複雑に書かないと出来ないのでしょうか… もしよろしければもう少しアドバイス頂けるとありがたいです。 よろしくお願いいたします。 |