2014-03-27 134 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;