如何将两个表的总销售额更新为第三个?

时间:2014-08-15 08:09:13

标签: sql-server-2008 sales

我有三张桌子。

  • 书籍:此表包含有关书籍(ID,标题,作者等)的基本信息
  • Store1:此表包含我们使用的商店的每日销售额(ID,价格,数量等)
  • Store2:此表包含其他商店的每日销售额(ID,价格,数量等)

出于计费原因,我们希望在Books表中添加TotalSales。当图书在商店1或2中有销售时,应更新此TotalSales。解决此问题的最佳做法是什么?它可以每天运行一次,或者每次有1或2次新的销售时运行..

请给我一些建议:)

4 个答案:

答案 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列表中的书籍表中的总计。

  1. 这两个商店表应该有一个名为create_date的字段。白天出售的任何书籍都应该在今天的商店桌上出售。您可以有一个计划作业来在晚上更新书表中的totalSales。