【发布时间】:2016-06-26 08:03:20
【问题描述】:
我无法让 mySQL 返回我所追求的结果,因此希望有人能给我一些关于我哪里出错的指示。我有 3 个表(Sales_Area、Orders、Rooflight_Request),订单包含一个 Sales_Area_ID 列以加入 Sales_Area,因此 Sales_Area 可以有很多订单。 Rooflight_Request 包含 Order_ID,因此一个订单可以有多个 Rooflight_Request。
Rooflight_Request 包含产品,我正在尝试对按销售区域分组的订单中的屋顶灯总数(公式考虑价格、折扣、汇率和数量)求和。
当我运行这个查询时:
SELECT salesArea.Area_Name,
(SELECT SUM(((rr.Price - (rr.Price * (rr.Discount /100))) / orders.Currency_Rate) * rr.Quantity)
FROM Rooflight_Request AS rr
WHERE rr.Order_ID = orders.Order_ID
AND rr.Record_Active = 1
AND rr.Alternative_Option <> 1
) AS Rooflights_Total
FROM Sales_Area AS salesArea
LEFT JOIN Orders AS orders ON
salesArea.Sales_Area_ID = orders.Sales_Area_ID
LEFT JOIN Users AS users ON
salesArea.User_ID = users.User_ID
GROUP BY salesArea.Area_Name
结果是按销售区域分组的,但我只得到一个有价值的订单。如果我将 group by 交换为 orders.Order_ID,则结果集包含所有订单和产品,但返回数千条记录,因为它没有按销售区域分组。谁能告诉我哪里出错了?谢谢。
【问题讨论】:
-
您到底想得到什么?每组一行??
-
你能添加表模式和预期结果集吗?它会帮助其他人帮助你
-
我试图实现的结果集是每个 Sales_Area(例如美国和欧洲)的一行,每行包含一个 Rooflights_Total 金额(它将所有订单中的所有屋顶灯(产品)加起来附于该销售区域)。通过上面的查询,我只能从一个订单中得到总数。如果我将组交换为 order_ID,然后每个订单都有一行,每个订单都有自己的总数。所以我需要将所有这些订单加在一起,并将它们分组到他们的销售区域下。
-
嗨 Mahesh 我会去研究如何在这里添加架构,因为这不是我以前做过的事情。我曾希望虽然我们只谈论 3 张桌子,但我可以解释一下。 Sales_Area 一对多订单和订单一对多 Rooflight_Request。我希望将屋顶灯总数分组在 salesArea 下
标签: mysql