列总和等于A - B.

时间:2013-07-31 12:49:00

标签: php mysql

这可能是一个相当直接的。我正在玩一个我想要创建的小应用程序。我有一个用户提交“buy_price”和“sell_price”的表单。如果他们已经亏损或获利,我会尝试解决问题。在数据库中有一个列可以更好地处理“保证金”,即“margin coulmn = sell_price-buy_price”(我将如何做)。或者在php中做到这一点会更好。

提前谢谢。

编辑:我使用数据库是因为我存储了数据,然后他们可以查看他们的购买历史记录。然后我想为那些利润率最高的人制作一个诸如“最佳交易”之类的部分。

3 个答案:

答案 0 :(得分:3)

我绝对不会在数据库中存储这么简单的计算值 - 维护可能会超过效率的任何边际收益​​。

即使没有存储该值,您仍然可以选择在检索时使用MySQL)还是使用PHP计算值。

SELECT buy_price, sell_price, (buy_price - sell_price) AS margin FROM x
除了SQL之外,我还是会在使用PHP进行渲染时计算它。

答案 1 :(得分:1)

最好在数据库中进行此计算并将值嵌入视图中:

create view vw_table as
    select t.*, (buy_price - sell_price) AS margin
    from table t;

为什么更好地使用视图(或在其他数据库中使用计算列)?

首先,确保在需要“保证金”的地方使用相同的定义和名称。其次,使用视图有助于将应用程序层与数据库层分开。因此,您可以更改表或列的名称​​,而无需重写应用程序 - 您只需更改视图即可。第三,在许多环境中,可以在大量数据上并行计算余量,而不必在应用程序中按顺序计算。 (另一方面,正在向客户端返回稍大量的数据。)

答案 2 :(得分:0)

“更好”的定义在很大程度上取决于您的应用。它通常指的是哪个操作更快,这需要你运行一个基准测试(但我猜它是PHP)。但是,速度对您来说可能不是问题,所以“更好”变得简单易用。这几乎肯定是PHP。