ショボ短歌会

仕入明細テーブル

伝票NO   インデックス番号   部数



出費詳細テーブル

伝票NO  出費先  出費額

以上のデータがあります。

仕入明細テーブルでインデックス番号でグルーピング化して部数の合計値が2000以上のインデックス番号と同じ値の出費詳細テーブルの伝票NOのレコードを削除しなさい。
delete 出費詳細
where 伝票NO in (select インデックス番号, sum(部数) from 仕入明細
            group by インデックス番号
            having sum(部数) >= 100);
これだと出来ませんよね?
sum(部数)が100以上のものを抽出するためにはselectでsum(部数)としなくてはいけないのですが
これだとダメですよね?伝票NOと同じか比較するのインデックス番号なので、selectでsum(部数)としないのは可能でしょうか?

A 回答 (2件)

> ちなみにupdateやdeleteをした後にselectとすると処理が反映されたのが表示されますか?



UPDATEやDELETEしたセッション(トランザクション)であれば処理が反映されたものが表示されます。
他のセッションからはCOMMIT後でないと反映されません。
    • good
    • 0
この回答へのお礼

ありがとう。

お礼日時:2011/10/12 20:46

副問合せの「SUM(部数)」は省略可能です。



delete from 出費詳細
where 伝票NO in ( select インデックス番号 from 仕入明細
group by インデックス番号
having sum(部数)>=100)
    • good
    • 0
この回答へのお礼

ありがとうございます。

ちなみにupdateやdeleteをした後にselectとすると処理が反映されたのが表示されますか?
それともcommitした後にselectしないと処理後のデータ見れませんか?

お礼日時:2011/10/04 21:05

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