2011-07-31 54 views
2

我在下面的查詢工作: -MySQL查詢問題 - 生成重新排序報告

SELECT group,item,buffer,stock,(stock-buffer) AS shortexcess 
FROM stkmain, stkbalance, stkbuffer 
WHERE stkmain.item = stkbalance.item 
AND stkmain.item = stkbuffer.item 

此查詢工作正常。我想添加另一個來自'sale'表的銷售額。修改後的查詢是: -

SELECT group,item,buffer,stock,(stock-buffer) AS shortexcess, quantity 
FROM stkmain, stkbalance, stkbuffer, sale 
WHERE stkmain.item = stkbalance.item 
AND stkmain.item = stkbuffer.item 
AND stkmain.item = sale.item 

與此查詢的問題是,它表明只有那些出現在銷售表,而不是stkmain表中的所有行的行。 請告訴我該如何糾正這個問題。

回答

4

在sktmain上使用Left Join獲取sktmain的所有行。

SELECT group,item,buffer,stock,(stock-buffer) AS shortexcess, quantity 
FROM stkmain 
LEFT OUTER JOIN stkbalance ON stkmain.item = stkbalance.item 
... 
+0

@cularisthanks。現在顯示的總行數也超過了總數。可能是因爲銷售表包含多個項目。我如何獲得特定商品的總銷售額,以便查詢顯示不同的商品。其概念是生成一份重新排序報告,其中包含庫存中的物料數量,緩衝液數量和這些特定物料的銷售量,如果有任何 – mmdel

+1

得到的話。只是將數量改爲總和(數量),然後逐個添加並正確地加入。多謝你們 – mmdel

1
SELECT `group`, item,buffer, stock, stock-buffer AS shortexcess 
FROM stkmain 
JOIN stkbalance ON skmain.item = stkbalance.item 
JOIN stkbuffer ON stkmain.item = stkbuffer.item 
OUTER JOIN sale ON stkmain.item = sale.item 

集團是一家reserved keyword,應由反引號進行轉義。