使用 Mysql 和 PHP 在表中汇总 [重复]

Posted

技术标签:

【中文标题】使用 Mysql 和 PHP 在表中汇总 [重复]【英文标题】:Totals in a Table with Mysql and PHP [duplicate] 【发布时间】:2013-10-22 13:38:38 【问题描述】:

我正在使用 phpmysql 中提取一些数据。我在查询中添加了 ORDER by ID ASC 子句,这给了我所需顺序的结果。ID 列是 MySQL 中递增的 ID,以确保唯一性。我想做的如下:

  ID       Payment       Accumulated Totals
  1        £200          £200
  2        £325          £525
  5        £205          £730
  7        £100          £830

由于我还是一个新手,我想知道如何实现如上所示的累计总数列。我在想应该有一些公式来计算每一行的累计总数。虽然我现在正在与这个问题作斗争,但我没有解决一些问题,一旦我想出一些东西,无论它是否有效,我都会发布代码来展示我的努力。

任何帮助或指导将不胜感激。

【问题讨论】:

我不太清楚,对此感到抱歉。我发送给 mysql 的只是付款而不是总数。付款后,用户通过表格提交付款,表格结尾如下: 我可能不太清楚,对此感到抱歉。我发送给 mysql 的只是付款而不是总数。付款后,用户通过一个表单提交它,该表单以 mysql 中的一个表结尾,其中只有列 id payment。那么上表就是用户在查看记录时看到的。所以我希望在从 MySQL 查询数据后,使用 PHP 得到上表。我在答案中看到了关节(感谢所有帮助),只是我在 mysql 中只有一个表。 @Bululu。您看到的连接是在同一个表之间完成的(请参阅我的 sqlfiddle 示例)。您不喜欢那里的哪些方法? 我认为你在做什么很清楚。我链接到的重复问题显示了如何计算运行总数,这不是您想要的吗? @Filipe Silva,感谢您的解释。这不是喜欢的问题,而是不知道的问题。我还没有进入关节,所以我一直认为关节只在两张桌子之间使用。我会尝试这些答案,看看有什么用。 【参考方案1】:
select t1.id, t1.Payment, SUM(t2.Payment) as Accumulated_Totals
from table t1
inner join table t2 on t1.id >= t2.id
group by t1.id, t1.Payment
order by t1.id

【讨论】:

请注意,如果表很大,这将非常低效,因为它会执行巨大的交叉积。【参考方案2】:

您可以在this answer中查看累积和的各种实现。

关于您的数据,如果您的值中有 £ 符号,则总和将返回 0。您必须执行以下操作:

REPLACE(Payment, '£', '') for it to be perceived as a summable value.

这是一个 sqlfiddle,展示了它如何适用于前面答案中提到的两种方法。

【讨论】:

以上是关于使用 Mysql 和 PHP 在表中汇总 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为mysql中的每个查询结果在表中插入行[重复]

DATETIME在表中的MySQL搜索记录[重复]

jquery ajax 在表重复的末尾添加 mysql 行

php与mysql表中如何求递归求和汇总?

在表中使用“自动换行:断词”[重复]

在表中使用 calc() [重复]