如何通过计算从一个 table 获取数据到另一个?

How do I get a data from one table to another but with calculations?

我有两个 table:“客户”和“订单”。 “Customer”table 有一个名为 noOfPurchases 的属性,“Order”table 有一个名为 quantity.

的属性

我如何更新客户 table,每个客户都会有他们所有订单数量的总和。例如,有一次有 5 件商品的订单,而另一条记录具有相同的 CustomerID 和 12 件商品。所以这意味着 Customers table 中的 noOfPurchases 应该是 17。并且所有客户数据都应该更新,而不是我应该将 customerID 一个一个地输入。那我该怎么做呢?

订单

ISBN customerID quantity
8670081874189 2901 30
333488387049 2901 20
6137027197872 3421 18
333488387049 3683 15

客户

customerID c_firstname c_surname noOfPurchases
2901 john smith null
3421 lisa jones null
3683 alan jenkins null

这是一个简单的多 table 更新,如手册页 https://dev.mysql.com/doc/refman/8.0/en/update.html

中所述
update customer 
join (select customerid, sum(quantity) qty from `orrder` group by customerid) csum
on  customer.customerid = csum.customerid
set nofpurchases = csum.qty;

您可以手动 运行 或定期使用 https://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html

或者,如果您希望更新订单插入,请使用触发器 https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html

delimiter $$
create trigger t after insert on `orrder`
for each row
begin
 update customer
  set nofpurchases = nofpurchases + new.quantity
  where customer.customerid = new.customerid;
end $$
delimiter ;