私は後になってしまった結果を返すためにMySQLを手に入れることができず、誰かが私が間違っているところで私にいくつかのポインタを与えることができると願っています。 Sales_Areaには3つのテーブル(Sales_Area、Orders、Rooflight_Request)があり、OrderにはSales_Areaに属するSales_Area_ID列が含まれているため、Sales_Areaには多くの注文があります。 Rooflight_RequestにはOrder_IDが含まれているため、オーダーは多くのRooflight_Requestを持つことができます。MySQLサブクエリの結び付きとグループ化の結果
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
を結果は、販売エリアごとにグループ化されていますが、私は唯一の価値の価値が単一の注文を取得しています。グループをオーダーに交換すると、オーダーIDの結果セットにすべてのオーダーと商品が含まれますが、販売エリア別にグループ化されていないため、何千ものレコードが返されます。誰かが私が間違っている場所にアドバイスできますか?ありがとう。
正確に何を取得しますか?グループごとに1つの行?? – sagi
テーブルスキーマと期待される結果セットを追加すると、他の人が手助けするのに役立ちます –
私が達成しようとしている結果セットは、Rooflights_Totalを含む各行のSales_Area(たとえばUSAとEUROPE)その販売エリアに取り付けられているすべてのオーダーのすべての屋上ライト(製品))。上記のクエリでは、私は1つの順序から合計を取得します。私がorder_IDにグループをスワップすると、各注文ごとにそれぞれの合計を持つ行が得られます。だから、私はこれらの注文をまとめて販売エリアに集める必要があります。 – JamesB