MYSQL-如何将一个表中的值与另一个表中的一个字段相加?

时间:2017-12-13 16:19:50

标签: mysql

大家,我正在制作血库捐赠系统数据库。所以我做了一张桌子

    update donation,blood_supply 
set amount_by_type = (amount_by_type + blood_amount) 
where donation.blood_type = blood_supply.blood_type; 

和第二张表 血液供应 ( blood_type varchar(45), amount_by_type float )

我的表看起来像这样

enter image description here

我希望通过血型来存储所有捐赠的全部血液。

所以现在我尝试根据blood_type对捐赠表中的值进行求和,并使用以下方法将它们存储到blood_supply表中:

{{1}}

但它并没有正确地计算blood_amount。

我得到了这个

enter image description here

在血液供应表中得到A = 0.8,B = 0.4,0 = 0.9

2 个答案:

答案 0 :(得分:0)

在加入和更新右表之前,您可能需要首先聚合左表。

update (select sum(blood_amount) blood_amount,
        blood_type
        from donation
        group by blood_type) dt, 
        blood_supply bs
set bs.amount_by_type = dt.blood_amount
where bs.blood_type = dt.blood_type

希望它可以提供帮助

答案 1 :(得分:0)

你寻找的是一种观点。每次修改另一个表中的数据时更新一个表是不切实际的。

我的回答是:

create view blood_supply  as select sum(blood_amount) as blood_amount, blood_type
        from donation group by blood_type

在此之后,blook_supply可以像任何其他表一样进行处理,但是会在捐赠更改时更新值。变更意味着新的捐赠,现有的更新或删除。