プロが教えるわが家の防犯対策術!

下記のような2つのテーブルがあり、
仕入れテーブルから、2014/1/2にBさんが仕入れたデータを
削除したいのですが、SQLが分かりません。

どのようなSQLにすると実現することができるでしょうか。

「一致するデータのみ削除したい」の質問画像

A 回答 (6件)

delete 仕入れテーブル where (商品,規格) in (select 商品,規格 from 商品テーブル where 担

当 = 'Bさん')
    • good
    • 0
この回答へのお礼

ありがとうございます!!!!

お礼日時:2014/11/20 14:15

問題は「コーラ」が「コカ・コーラ」と同値かどうかです


それによって書き方がだいぶ違います
    • good
    • 1
この回答へのお礼

あ!それまちがいです。
商品名には同一値が入ります。
質問が適切でなかったです。すみません。

お礼日時:2014/11/20 17:59

重要なことは担当フィールドの無い仕入れテーブルから担当をどうやって


判断するかです。
規格と数量の組み合わせで担当者が1意に限定できるのならば、それで結合した
ビューを作ればいいのです。それならば簡単に削除できます
逆に、1意に限定できなければ1つずつ手作業でやるしかありません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2014/11/20 14:14

where句をとりあえずは、勉強して、SELECT, DELETEとの組み合わせ例を読むといいと思うよ。


外部結合とか内部結合は時間をかけて理解するほうがいいけど、テーブル数が極端に少ないときはあんまり必要なさそうな。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
SQL難しいです。がんばって勉強してみます

お礼日時:2014/11/20 14:14

担当者テーブルからは、お茶以外はBさんが担当とわかるので、仕入れテーブルから、当該日付、かつ、お茶じゃないレコードを抽出できれば、それらのレコードを削除できるよ。


ほかの考え方としては、担当者テーブルからBさん担当の商品種別名と、仕入れテーブルの商品名と部分一致するレコードを抽出して、削除。
MySQLの本かなんかで、SELECT, DELETEについて目を通せば参考になるよ。テーブル名、フィールド名、フィールドのデータ型に注意。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ループでぐるぐる回せば、削除できるんですが
SQLで一括で削除したいのです。

お礼日時:2014/11/19 22:34

DB設計がダメです。


仕入れテーブルには担当者のフィールドが必要です。

現状のDBでは、商品フィールドと企画フィールドから推測するしかありません。
もし、商品と企画の2つでデータを一意に限定できるものでしたら、delete文の
where 式に2つのフィールドについて条件を書けばいいのです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
DB設計が変えられないので難儀しております。
in句などを使ってできないでしょうか。。

お礼日時:2014/11/19 22:36

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

このQ&Aを見た人はこんなQ&Aも見ています

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


このQ&Aを見た人がよく見るQ&A