我有這3代表在這裏:當我加入了父表中的結果,它會影響一個項目,它應該不會受到影響
producttbl:
p_id p_name price
ANK001 ANKLET 200
BRC001 BRACELET 100
stocks_add:
p_id qty
ANK001 200
ANK001 50
stocks_rel:
p_id qty
ANK001 20
,我有這個代碼就在這裏(這是由@建議波西米亞雖然我加入了一些):
Select p.p_id, p.p_name, p.price,
`coalesce((SELECT sum(a.qty)
FROM stocks_add a GROUP BY a.p_id),0)
-coalesce((SELECT sum(r.qty)
FROM stocks_rel r GROUP BY r.p_id),0)
as stock_on_hand
from productstbl p
left join stocks_add a
on a.p_id=p.p_id
left join stocks_rel r
on r.p_id=p.p_id
GROUP BY p.p_id`
,當我執行它,它會導致這樣:
p_id p_name price stock_on_hand
ANK001 Anklet 200 230
BRC001 Bracelet 75 230
我嘗試從第二張和第三張桌子上拿到手中的股票。 並將其與產品錶鏈接。
假設是,230應該只與ANK001。期望的輸出應該是這一個:
`p_id p_name price stock_on_hand
ANK001 Anklet 200 230
BRC001 Bracelet 75 0
`
但第一個輸出的結果告訴其他方式。 ?:( 什麼是錯的代碼,請不要幫我
如果你創建了一個可以重現你的問題的sqlfiddle,那將是最好的。我必須這樣做,基本上我回答每個SQL問題。此外,請在表的命名上保持一致 - 在讀取查詢時必須在STOCKS_RELEASED和stocks_rel之間進行轉換並不是非常有用! –
我編輯了我所做的錯誤..當然。我會。我會盡力。 :) – jaegyo23
感謝您的修復 - 爲我節省了幾分鐘建設小提琴(我不得不做幾個手動更改,但沒有什麼大不了的)。 SQLFiddle真的很不錯,我建議你在適當的時候嘗試一下 - 並且確保使用完全岩石化的「Text to DDL」按鈕! –