2011-05-09 46 views
1

以下3張表格,如何以最佳/更快的方式計算百萬條記錄的庫存餘額?!
作爲我的經驗,使用連接可以小於0.1秒,但並非最終結果,
使用工會可以得到最終的結果,但它需要1X秒......mysql查詢3個表,加入或聯合哪一個最好計算餘額?

 
stocktable 
stid productid qty 
1 1 100 
2 2 200 

sellstable 
sellid stid qty 
1 1 50 
2 1 30 

scraptable 
scrapid stid qty 
1 1 10 
2 1 5 
3 2 100 
SELECT 
    a.stid, 
    qty, 
    sellid, 
    b.qty, 
    scrapid, 
    c.qty 
FROM 
    stocktable AS a 
LEFT JOIN sellstable AS b ON a.stid = b.stid 
LEFT JOIN scraptable AS c ON a.stid = c.stid 

 
1 100 1 50 1 10 
1 100 1 50 1 5 
1 100 2 30 1 10 
1 100 2 30 1 5 
2 200 null null 3 100 

此使用時加入了內部查詢,但如何總結餘額爲快...

補充信息:

 
the result should be 
1 5 
2 100 

謝謝!

+1

如何在沒有價格的情況下獲得餘額? – Matthew 2011-05-09 14:34:51

+0

嗨,感謝您的評論。只有餘額可以! – mos 2011-05-09 15:09:22

回答

0

如果您確實需要查詢中的所有列以及三個qty字段的總和,那麼您可以執行SUM(a.qty+b.qty+c.qty),但很難確切地確定您要查找的內容。這些表格中是否有特定的關鍵字?你需要sellid和scrapid嗎?

+0

嗨,額外的信息被添加。感謝評論! – mos 2011-05-09 15:14:23

+0

你好muffinista,sellid和scrpid是不需要這個查詢我認爲。我也嘗試過使用每個必填字段的子查詢,但我認爲使用JOIN應該是最快捷的方法......但如何做到這一點? – mos 2011-05-11 05:05:09

+0

您的數量在上述預期結果中是否正確?我不明白stid = 1的數量可能是5,但也許我錯過了一些東西。 – muffinista 2011-05-12 13:37:07