2016-09-29 85 views
0

因此我在Microsoft SQL Server上的数据库中有三个表。根据来自其他表的值更新表上的所有行

该系统是一个学习的例子,它包含表A,这是学校有一个ID和花费在购买东西的总金额。

表B包括一个可以用的东西的ID和价格

表C包含所有的订单,和ORDER_ID,学校ID,stuff_id和金额买东西

我的问题是这样的,我有创建一个触发器,当表C中插入一个值时,会更新所有学校花费的总金额。我无法弄清楚如何做到这一点。特别是因为我必须计算购买的东西的数量。

如果你想看到的SQL像我一样,你可以在这里做到这一点:http://sqlfiddle.com/#!6/265f0

+2

创建一个视图来计算表中的总数,而不是实时值。如果您希望用于报告目的,则可以每天晚上在计划作业中更新表格中的总计。 –

+0

难道你不想让触发器处理INSERT(新订单),UPDATE(更改订单)和DELETE(删除订单)吗?您是否想过如何处理价格变化,例如学校下订单,价格变动,然后学校更改订购的数量?或者您宁愿防止对表格进行直接更改并强制用户通过也执行完整性检查的存储过程,例如订购数量大于零?如果你使用触发器,请记住它们每个语句触发一次,但是一个语句可能会影响多行。 – HABO

回答

1

希望查询是这样的:

select c.school_id, sum(b.price) 
from b join 
    c 
    on b.stuff_id = b.stuff_id 
group by c.school_id; 

可以使用触发器。但是这会变得更加复杂,因为您必须处理已删除和更新的记录以及插入它们。

+0

谢谢,我设法解决这个问题 – Krysvac

相关问题