2014-02-12 42 views
1

我簡單的表名爲材料與此列:計算運行平衡

mat_id  mat_name  stock_in  stock_released date 
1    alloy   30    0   feb13 
2    steel   15    0   feb13 
3    alloy   0     3   feb14 

我怎樣才能產生,或計算出它作爲:

mat_id  mat_name  stock_in  stock_released Balance   date 
1    alloy   30    0    30   feb13 
2    steel   15    0    15   feb13 
3    alloy   0     3    15   feb14 

這裏是我現有的代碼但是天平有點問題,因爲它總計不考慮材料名稱:

SELECT 
    `material`.`mat_id`, 
    `material`.`mat_name`, 
    `material`.`stock_in`, 
    `material`.`stock_released`, 

    @Balance := @Balance + `material`.`stock_in` - `material`.`stock_released` AS `Balance`, 
    `material`.`date` 
FROM `material`, (SELECT @Balance := 0) AS variableInit 
WHERE mat_name = mat_name 
ORDER BY `material`.`mat_id` ASC 

它如何創建出這個視圖?

+0

你不能在MySQL中。它在'from'子句中有兩個變量和一個子查詢。回到你之前的問題,看看我的答案。這可以放在一個視圖中。 –

+0

更多類似這樣.. – user3117337

回答

0

有了這些數據,是可以獲得運行平衡查詢:

SELECT m.`mat_id`, m.`mat_name`, m.`stock_in`, m.`stock_released`, 
     (select sum(stock_in) - sum(stock_released) 
     from material m2 
     where m2.mat_name = m.mat_name and 
       m2.mat_id <= m.mat_id 
     ) as balance, 
     m.`date` 
FROM `material` m 
ORDER BY m.`mat_id` ASC; 

這可以放入視圖。

+0

如何在我的物料欄中填寫supplier_id並且必須與supplier table中的supplier_id匹配並顯示supplier_name sir? – user3117337

+0

然後,您將在子查詢中添加另一個條件「m2.supplier_name = m.supplier_name」。 –

+0

這是正確的先生? 來自物料m2的SELECT m.'mat_id',m.'mat_name',s.'sup_name',m.''''''',m''''rekrele'', (select sum(stock_in) - sum(stock_released) ,供應商S2 其中m2.mat_name = m.mat_name和 m2.mat_id <= m.mat_id m2.supplier = s2.sup_id )作爲平衡, m.'date' FROM'material'米,'supplier' s, ORDER BY m.'mat_id' ASC' – user3117337