我有三张桌子。
出于计费原因,我们希望在Books表中添加TotalSales。当图书在商店1或2中有销售时,应更新此TotalSales。解决此问题的最佳做法是什么?它可以每天运行一次,或者每次有1或2次新的销售时运行..
请给我一些建议:)
答案 0 :(得分:1)
您可以在运行更新查询的商店表中使用插入触发器,也可以在每天某个时间点计算销售额的预定作业,但问题是为什么每个商店都有单独的表?更好的设计是为所有商店提供商店表,以及引用商店表和书籍表的销售表。
答案 1 :(得分:1)
最佳做法是在需要时计算TotalSales - 也许作为一个视图?您还可以在各个商店表上使用触发器来更新总和,但这不是正常形式(并且您询问最佳实践)。
有两个商店桌子似乎很奇怪。如果你不能将它们组合起来,那么你应该考虑创建一个视图,它是两个表在公共字段上的并集:
create view stores
as
select book_id, price, quantity from store1
union
select book_id, price, quantity from store2
然后计算总销售额的视图变得更容易
create view total_sales
as
select book_id, sum(quantity)
from stores
group by book_id
现在,只要您需要图书的总销售额,就可以加入total_sales视图。
答案 2 :(得分:1)
创建一个包含图书的结算视图,并计算两个表格的总计。
答案 3 :(得分:0)
我认为有两种方法可以尝试, 1.在两个商店表中创建插入触发器。每次您将书籍销售和行添加到商店表格时,它都会更新书籍表格中的总数量,或者您可以在新表格中插入bookID(tbl_dailyBookSales)。在非工作时间或SQL计划作业进程更新tbl_dailyBookSales中bookid列表中的书籍表中的总计。