繁体   English   中英

具有连接和分组的MySQL子查询结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM