簡體   English   中英

來自2個表的SQL連接,按來自第三個表的連接數據分組

[英]SQL joins from 2 tables, grouped by joined data from a third

標題令人困惑? :)

我正在嘗試從購物車數據庫中生成有用的報告。

有一個表orders ,其中包含“ date_ordered”(以及我不關心的其他內容)和鍵“ orders_id”

第二個表orders_products具有相同的“ orders_id”鍵,並具有有關已訂購商品的信息。 我特別對“ products_id”,“ products_quantity”和“ final_price”感興趣

我想做的是生成一個銷售報告,其中顯示date * ordered在兩個日期之間時,數量*價格的總和並按products_id分組。 我可以這樣:

SELECT op.products_id AS 'PID',
    SUM(op.products_quantity) AS 'sales Q',
    SUM(op.final_price * op.products_quantity) AS 'sales $'
FROM orders o
JOIN orders_products op
ON o.orders_id = op.orders_id
WHERE o.date_purchased
BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY op.products_id

看來工作正常。 但是現在我“簡單地”想要在報告中添加另一列來顯示產品名稱。 這些數據是在另一個表, products_description在一列“products_name”。 所以我嘗試了這個:

SELECT pd.products_name AS 'Product',
    op.products_id AS 'PID',
    SUM(op.products_quantity) AS 'sales Q',
    SUM(op.final_price * op.products_quantity) AS 'sales $'
FROM orders o
JOIN orders_products op
ON o.orders_id = op.orders_id
JOIN products_description pd
ON op.products_id = pd.products_id
WHERE o.date_purchased
BETWEEN '2012-01-01' and '2012-12-31'
GROUP BY op.products_id

乍一看似乎可行,直到我注意到所有銷售Q和銷售$數據都是應有的3倍。

它超出了我的理解能力:)幫助贊賞。

另一件事...就像其他人提到的將產品名稱添加到group by子句中一樣,您似乎仍然具有某種笛卡爾式結果。 在不知道實際數據的情況下,您可能希望將查詢打包成類似...

select
      pd.products_name AS 'Product',
      PreQuery.*
   from
      ( SELECT 
              op.products_id AS 'PID',
              SUM(op.products_quantity) AS 'sales Q',
              SUM(op.final_price * op.products_quantity) AS 'sales $'
           FROM 
              orders o
                 JOIN orders_products op
                    ON o.orders_id = op.orders_id
           WHERE 
              o.date_purchased BETWEEN '2012-01-01' and '2012-12-31'
           GROUP BY 
              op.products_id ) PreQuery
      JOIN products_description pd
         ON PreQuery.PID = pd.products_id

這應該起作用,因為內部查詢只將結果匯總到PID上。 然后,獲取結果並加入產品描述表。

如果您仍然為每個商品獲得重復的商品,那么您的商品說明表似乎會顯示同一商品ID的多個記錄...例如,具有更高的唯一鍵,但是同一商品可能具有多種狀態,類型,無論引起問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM