2014-03-27 180 views
1

提前請原諒「新手到現代數據庫」問題。但是有一個非常簡單的問題。MYsql中的計算字段

如下表:

ID Cost_Goods  Sales_Price 
1 100   150 
2 75    95 
3 500   700 

我知道我可以查詢

SELECT Cost_Goods FROM someTable WHERE ID =2; 

很多時候,我想知道利潤是在計算「利潤」:

SELECT profit FROM someTable WHERE ID =2; 

我知道我可以在這裏使用一個函數。但是我在構建大量遺留代碼方面存在一些限制。我希望通過一種方法在數據庫本身中創建一種「計算字段」。那除了上面的「利潤」查詢之外,還允許我查詢。

SELECT Cost_Goods, profit FROM someTable WHERE ID =2; 

甚至:

SELECT * FROM someTable ORDER BY profit; 

這可能嗎?

我知道有更優雅的方式來處理計算,但我正在處理的應用程序的接口根本不允許使用除非是簡單查詢之外的其他任何內容。我正試圖改變計算結果。

回答

4

您可以更改表格以添加到列中,也許理想可能不是,但這需要每個插入時新字段保持最新。如果你有控制權,這並不是一個問題,但如果你認爲你更新了所有的INSERTS,而事實上你沒有更新,那麼可以回來並咬你。

我認爲最佳的辦法是做計算的SQL

SELECT Cost_Goods -Sales_Price AS profit FROM someTable ORDER BY profit 

或者,如果你可以在數據庫中創建一個視圖...

CREATE VIEW sales_profit AS SELECT ID, Cost_Goods, Sales_Price, Cost_Goods -Sales_Price AS profit FROM someTable; 

然後你就可以..

SELECT * FROM sales_profit where ID = 2; 
SELECT * FROM sales_profit ORDER BY profit;