如何通过计算从一个 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 ;
我有两个 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 ;