代码之家  ›  专栏  ›  技术社区  ›  Derek Adair

查询结果组织

  •  1
  • Derek Adair  · 技术社区  · 15 年前

    我正在尝试找出格式化这个查询的最有效方法。

    我有三张表——交易表、采购表和项目表。

    所需的结果是为特定客户的每个项目选择销售数据(数量/销售总额)。


    表格的格式如下:( =主键)*

    交易: 事务_ID*,时间戳

    采购: 采购编号*、销售编号、项目编号、交易编号、数量

    项目: 项目编号*,客户编号,描述


    目前为止,我已经设置了一个查询来选择给定客户机ID的每个项目:

    SELECT Item_ID, Description FROM Item WHERE Client_ID = $ClientId  
    

    然后,我将结果存储在一个数组中,并执行查询以检索给定日期范围内每个项目的销售数据。

    SELECT Sale, Quantity
      FROM Purchase INNER JOIN Transaction
        ON Purchase.Transaction_ID = Transaction.Transaction_ID
     WHERE Transaction.Timestamp >= $start
       AND Transaction.Timestamp<= $end
    

    然后,对于每一行获取的数据,我对数量进行求和。

    它可以完成任务,但可能不是最有效的完成任务的方法。

    我想按销售总额订购这些数据,把最大的数字放在第一位
    你将如何从最大到最小进行排序?

    有没有一种方法可以在一个查询中完成这一切?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Nick Fortescue    15 年前

    下面的工作可以吗?

    SELECT Item_ID, SUM(Quantity), Sum(Sale)
    FROM Item
    JOIN Purchase ON Item.Item_ID=Purchase.Item_ID
    JOIN Transaction ON Purchase.Transaction_ID=Transaction.Transaction_ID
    WHERE Client_ID = $ClientId
    AND Transaction.Timestamp>= $start
    AND Transaction.Timestamp <= $end
    GROUP BY Item_ID
    ORDER BY SUM(Quantity), SUM(Sale) DESC
    

    我想这就是你想问的好问题。 可能有一个愚蠢的错误,因为我没有在你的桌子上测试过,但它应该让你开始。