[英]MySQL subquery result with joins and grouping
我在使mySQL返回所要返回的结果时遇到麻烦,因此希望有人可以给我一些有关我要去哪里的指示。 我有3个表(Sales_Area,Orders,Rooflight_Request),订单包含要加入Sales_Area的Sales_Area_ID列,因此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
结果按销售区域分组,但我只得到一笔价值不菲的订单。 如果我将组替换为orders.Order_ID,则结果集将包含所有订单和产品,但会返回数千条记录,因为它没有按销售区域分组。 谁能告诉我我要去哪里错了? 谢谢。
期待您查询结构我认为总计的子选择不正确..您(我的意见)应尝试将rr与其他表的顺序连接起来
SELECT salesArea.Area_Name, SUM(((rr.Price - (rr.Price * (rr.Discount /100))) / orders.Currency_Rate) * rr.Quantity)
FROM FROM Rooflight_Request AS rr
INNER JOIN Orders ON r.Order_ID = orders.Order_ID
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
WHERE rr.Record_Active = 1
AND rr.Alternative_Option <> 1
GROUP BY salesArea.Area_Name
尝试一下,它将起作用
SELECT SA.Area_Name,SUM((((RR.Price-(RR.Price *(RR.Discount / 100)))/ O.CuRRency_Rate)* RR.Quantity)FROM Sales_Area SA INNER JOIN订单O ON SA.Sales_Area_ID = O .Sales_Area_ID INNER JOIN Rooflight_Request RR ON RR.Order_ID = O.Order_ID WHERE RR.Record_Active = 1 AND RR.Alternative_Option <> 1 GROUP BY SA.Area_Name;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.