0

ヘルプ!これが私の問題です。何がうまくいかないのかわからない 2 つのテーブルがあります。1 つは販売のテーブルで、もう1 つはトランザクションのテーブルです。トランザクション テーブルは販売テーブルと同じですが、非常に詳細です。販売テーブルの売上は 0 です。両方のテーブルが 0 になるように、取引の詳細な売上を更新したいです。更新コマンドは次のとおりです。

UPDATE transaction SET total_sale=0 WHERE transaction.idrecipt = sales.idreceipt

問題は、トランザクション ヘルプから 5 つのフィールドしか更新されないことです!! 私は何を間違っていますか!!

4

2 に答える 2

2

まず、同じデータを 2 つの異なるテーブルに配置することは、一般的に悪い設計と見なされていることを指摘しておきます。私は、total_sale をどこにでも保存する理由はないとさえ主張します。販売を構成するトランザクションからいつでも計算できます。

あなたが抱えている問題は、Sales の現在のレコードしか見ていないことにあります。代わりにこれを試してください。また、total_sale=0 の Sales のみに影響するようにコマンドを修正しています。そうしないと、すべてのトランザクションを 0 に設定することになりますが、これはあなたが望むものではないと思います。

UPDATE transaction ;
  SET total_sale=0 ;
  FROM sales ;
  WHERE transaction.idreceipt=sales.idreceipt ;
   AND sales.total_sale=0

タマル

于 2011-07-07T20:52:05.170 に答える
0

問題は、ポインターが Sales テーブル内で移動していないため、同じ idreceipt でのみ作業していることです。Sales テーブルを SCAN する必要があります。

これを修正する1つの方法があります

Select Sales

Scan
    UPDATE transaction SET total_sale=0 WHERE transaction.idrecipt = sales.idreceipt
EndScan
于 2011-07-08T14:47:57.910 に答える