0

テーブルの残高列を更新する際に助けが必要です。更新コマンドの使用

customer_master に存在する残高列

customer_master > custcode、残高

2 つのテーブルの値に基づいて更新する必要があります。

予約 > custcode、bookingamount

Receivables > custcode、amountrecd

customercode の場合、残高は bookingamount - amountrecd です。

このコマンドは、mysql および postgresql で適用されます。

これは、(custcode ='A1234XXXXX' の場合) のような単一の顧客に適用することも、customer_master に存在するすべての顧客に適用することもできます。

「2 つのテーブルからの残高の更新」で Google を試しましたが、今のところうまくいきません。

ありがとう

4

2 に答える 2

2

MySQL の場合、UPDATEステートメントであっても複数のテーブルを結合できます。テーブルにまだレコードがないLEFT JOIN可能性があるため、使用しました。custcodereceivables

UPDATE  customer_master a
        LEFT JOIN bookings b
            ON a.custcode = b.custcode
        LEFT JOIN receivables c
            ON a.custcode = c.costcode
SET     a.balance = COALESCE(b.bookingamount, 0) - COALESCE(c.amountrecd, 0) 
-- WHERE a.custcode = 'A1234XXXXX'

フォローアップの質問: custcode に と の複数のレコードを含めることはできますbookingsreceivables? もしそうなら、私は答えを更新します。

于 2012-10-20T05:53:36.207 に答える
1

(おそらく)トップベルトとブレースの上にある私のテイク

UPDATE  customer_master a
        LEFT JOIN (select custcode, sum(COALESCE(bookingamount, 0)) AS bookingamount 
                   from bookings group by custcode) b
            ON a.custcode = b.custcode
        LEFT JOIN (select custcode, sum(COALESCE(amountrecd, 0)) AS amountrecd 
                   from receivables group by custcode) c
            ON a.custcode = c.custcode
SET     
         a.balance = COALESCE(b.bookingamount, 0) - COALESCE(c.amountrecd, 0) 
-- WHERE a.custcode = 'A1234XXXXX'
于 2012-10-20T06:03:23.150 に答える