我正在尝试找出格式化此查询的最有效方法。
我有三个表 - 交易,购买和物品。
所需的结果是为特定客户选择每个项目的销售数据(数量/销售总额)。
表的格式如下:( =主键)*
交易: Transaction_ID *,时间戳
购买:Purchase_ID *,Sale,Item_ID,Transaction_ID,数量
项目: Item_ID *,Client_ID,说明
截至目前,我已设置查询以选择给定client_id的每个项目:
SELECT Item_ID, Description FROM Item WHERE Client_ID = $ClientId
然后我将结果存储在一个数组中,并执行查询以检索给定日期范围内每个Item_ID的销售数据:
SELECT Sale, Quantity
FROM Purchase INNER JOIN Transaction
ON Purchase.Transaction_ID = Transaction.Transaction_ID
WHERE Transaction.Timestamp >= $start
AND Transaction.Timestamp<= $end
然后,对于每个提取的行,我将数量相加。
完成工作,但可能不是最有效的方法。
我想按销售总额订购此数据,将最大数字放在首位
您如何从最大到最小的方式对其进行排序?
有没有办法在一个查询中完成所有操作?
答案 0 :(得分:4)
会有以下工作吗?
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
我认为这就是你想要的好问题。 在某些地方可能有一个愚蠢的错误,因为我没有在你的桌子上测试它,但它应该让你开始。