2011-09-02 104 views
0

這個MySQL代碼有問題。 它似乎正在返回更多的股票,然後應該有。MySQL多個左連接組由

表位置持有股票獲得(多個位置的一個產品) 表orderbody持有訂單訂購的產品(1個orderheader許多orderbody)

SELECT PRO.ProductID, 
     PRO.ProductCode, 
     SUM(POS.Qty) AS instock, 
     SUM(OB.Qty) AS onorder 
FROM products AS PRO 
LEFT JOIN position AS POS ON POS.ProductID = PRO.ProductID 
LEFT JOIN orderbody AS OB ON OB.ProductID = PRO.ProductID 
WHERE POS.ProductID = OB.ProductID 
GROUP BY PRO.ProductID, POS.ProductID, OB.ProductID 
  • 我得到320的inStock
  • 實際庫存數量= 40
  • 位數= 2(每個數量20)

  • 的onOrder = 16數量

  • 實際orderbody = 8個的行數
  • 實際上順序= 8(每個具有數量= 1)

這是對產品之一

我知道它與團隊有關,但我無法解決。

感謝您收到的任何幫助。

回答

0

前幾天我有同樣的問題。嘗試通過從單獨的查詢中進行選擇:SELECT ... FROM products,(SELECT ...)...「您將兩個表格左連接在一起,嘗試先自己測試子查詢,然後嘗試(一旦你有你想要的數據,而不是重複的,因爲那是你的問題

+2

是運行他們像下面的作品。但我認爲有一種方法可以讓我像這樣做。謝謝回覆。 – Ryan

0

你正在選擇這個字段PRO.ProductCode,但不是它的分組,猜測它可能是問題。

+0

沒有試過,它沒有幫助。應該是什麼結果是每行產品ID顯示一行它的ID,它的代碼,什麼是當前的庫存和目前的訂單什麼是 產品代碼沒有以任何其他方式使用,只是出現在桌子上每個productid也有自己的產品代碼(唯一我知道重複unnecisary唯一列,但地獄爲什麼不) – Ryan

+1

很難提供更多的建議,而無需查看數據庫結構和一些示例數據。嘗試刪除組和列的總和和看看被選中的原始數據,看看你是否有更多的東西副本,那麼你期望 – bumperbox