生成从每个州销售的产品数量。 Mysql查询

时间:2013-04-24 17:52:08

标签: mysql

这是我想要达到的最终结果:

特定日期(例如本月)每个州针对每种产品销售的数量的记录

             District State A   District State B 
Product A                 356                934
Product B                 343                232

方案

我有以下几点需要明确:

  • 我的系统已启动并正在运行,因此在下次更新之前更改架构很困难。
  • 我的地区称为“”,例如堪萨斯州或德克萨斯州。
  • 我有一个名为“产品”的产品表,没有与之相关的价格
  • 我有一个由州产品价格组成的表格,其中包含指向“州”和“产品”表格的链接,并添加了“价格列”。所以每个州都有自己的产品清单价格。
  • 我的客户称为“代理商”,每个客户都连接到特定的状态,以便在订单处理期间(在我的应用程序中)向每个代理商收取从州产品价格表中获得的正确产品价格
  • 我有一个订单表,其中包含由具有日期的代理商订购的订单,订单也被记录在相同的订单表中。此表不包含已购买的产品列表。这就是下一张表的目的(orderLines表)
  • 我有一个订单行表,该表存储了所有购买的产品,其销售数量与订单表中的一个订单相关联。所以每个订单可以有很多订单。

这就是说 下表如下所示:

州表

State_Id
State_Name

产品表

Product_Id
Product_Name

州产品价格表

StateProduct_Id
State_Id - referenced to states table
Product_Id - linked to products table
StateProduct_Price

代理商表

Agent_Id
Agent_Name
State_Id - linked to states table

订单表

Order_Id
Agent_Id
Order_DatePurchased - in the end this date is what will be used to calculate the total quantity of products sold within a certain date

订单行表:

OrderLine_Id 
Order_Id - linked to the orders table
Agent_Id - linked to the agents table
Product_Id - linked to the products table not products state table
OrderLine_ProductNameATOP - at time of purchase
OrderLine_QuantitySoldATOP - at time of purchase

订单行表将用于获取将在报告中使用的产品ID引用的特定产品的数量。

我需要一个查询才能生成上面显示的报告。

我该怎么做才能收到此报告?!我希望有人能帮帮忙。我不希望有人为我做这件事,只是解释会很棒

1 个答案:

答案 0 :(得分:2)

您需要交叉表报告,这不是在MySQL中生成的最简单的事情。

以下是获取1月份结果集的查询(未经测试):

Select 
   OrderLines.Product_Id,
   States.State_Name,
   Sum(OrderLines.OrderLine_QuantitySoldATOP) as Quantity
From ( (
   OrderLines 
      Inner Join Orders on OrderLines.Order_Id = Orders.Order_Id )
      Inner Join Agents on OrderLines.Agent_ID = Agents.Agent_ID )
      Inner Join States on Agents.State_Id = States.State_Id 
Where 
   Orders.Order_DatePurchased >= '2013-01-01' and
   Orders.Order_DatePurchased < '2013-02-01' 
Group by 
   OrderLines.Product_Id,
   States.State_Name

现在您需要在交叉表中格式化它。此链接将带您进入一个页面,该页面说明如何利用存储过程将结果集从上面的查询转换为您需要的布局。

http://www.danradigan.com/wordpress/2011/03/pivot-tables-in-mysql/