我需要帮助更新表格中的余额列。使用更新命令
customer_master中的余额列
customer_master> custcode,平衡
需要根据两个表中的值进行更新
预订> custcode,bookingamount
应收账款> custcode,amountrecd
对于客户代码,余额为bookingamount - amountrecd
该命令将应用于mysql和postgresql。
它可以针对单个客户(例如custcode ='A1234XXXXX'),也可以应用于customer_master中的所有客户。
我尝试了谷歌“从两张桌子上更新余额”但到目前为止没有运气。
感谢
答案 0 :(得分:2)
对于MySQL,即使它是UPDATE
语句,也可以连接多个表。我使用了LEFT JOIN
,因为有custcode
在receivables
表上还没有记录的可能性。
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是否可以在bookings
和receivables
上包含多条记录?如果是这样,我会更新答案。
答案 1 :(得分: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'