Sql 查询结果组织

Sql 查询结果组织,sql,mysql,performance,Sql,Mysql,Performance,我正试图找出格式化此查询的最有效方法 我有三张表——交易表、采购表和商品表 所需结果是为特定客户的每个项目选择销售数据(数量/销售总额)。 表的格式如下:(=主键)* 事务:事务ID*,时间戳 采购:采购ID*、销售、项目ID、交易ID、数量 项目:项目ID*,客户ID,描述 目前为止,我已设置了一个查询,用于为给定的客户端id选择每个项目: SELECT Item_ID, Description FROM Item WHERE Client_ID = $ClientId 然后,我将结

我正试图找出格式化此查询的最有效方法

我有三张表——交易表、采购表和商品表

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


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

事务:事务ID*,时间戳

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

项目:项目ID*,客户ID,描述


目前为止,我已设置了一个查询,用于为给定的客户端id选择每个项目:

SELECT Item_ID, Description FROM Item WHERE Client_ID = $ClientId  
然后,我将结果存储在一个数组中,并执行查询以检索给定日期范围内每个商品ID的销售数据:

SELECT Sale, Quantity
  FROM Purchase INNER JOIN Transaction
    ON Purchase.Transaction_ID = Transaction.Transaction_ID
 WHERE Transaction.Timestamp >= $start
   AND Transaction.Timestamp<= $end
选择销售、数量
来自购买内部联接事务
ON Purchase.Transaction\u ID=Transaction.Transaction\u ID
其中Transaction.Timestamp>=$start

和Transaction.Timestamp以下操作是否有效

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
选择项目标识、金额(数量)、金额(销售)
从项目
加入对项目的采购。项目\u ID=采购。项目\u ID
购买时加入交易。交易\u ID=交易。交易\u ID
其中Client_ID=$ClientId
和事务。时间戳>=$start

和Transaction.Timestamp以下操作是否有效

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
选择项目标识、金额(数量)、金额(销售)
从项目
加入对项目的采购。项目\u ID=采购。项目\u ID
购买时加入交易。交易\u ID=交易。交易\u ID
其中Client_ID=$ClientId
和事务。时间戳>=$start


和事务。时间戳欢迎使用StackOverflow!这是您的第一次投票。删除了PHP标记,因为它实际上是一个仅限SQL的问题。添加了sql查询性能标记。如果这是一个愚蠢的问题,很抱歉,但在这种情况下,您所说的销售总额是什么意思?@Gordon-编辑得好。我添加了PHP标签,然后将问题稍微修改了一下@Peter-我的意思是,如果一件商品的销售额为400美元,其余的为0美元,我希望总销售额为400美元的商品首先列出欢迎来到StackOverflow!这是您的第一次投票。删除了PHP标记,因为它实际上是一个仅限SQL的问题。添加了sql查询性能标记。如果这是一个愚蠢的问题,很抱歉,但在这种情况下,您所说的销售总额是什么意思?@Gordon-编辑得好。我添加了PHP标签,然后对问题@Peter做了一点修改——我的意思是,如果一件商品的销售额为400美元,而其他商品的销售额为0美元,我希望总销售额为400美元的商品排在第一位,非常好。我要试试这个。作为将来的参考,您是如何突出显示SQL语句中的语法的?@Derek:只需突出显示文本并单击代码(101010)图标。嗯。。。我做了代码图标。你是如何让蓝色文本出现的?它看起来很完美,除了我要将SUM(Sale)添加到刚才编辑的select and ORDER BY SUM(Sale)中,以便在您的问题中重新格式化您的代码,这正是我所说的Nick。我该怎么做?很好。我要试试这个。作为将来的参考,您是如何突出显示SQL语句中的语法的?@Derek:只需突出显示文本并单击代码(101010)图标。嗯。。。我做了代码图标。你是如何让蓝色文本出现的?它看起来很完美,除了我要将SUM(Sale)添加到刚才编辑的select and ORDER BY SUM(Sale)中,以便在您的问题中重新格式化您的代码,这正是我所说的Nick。我该怎么做?