求和;在1个查询中计数列还是使用PHP?

求和;在1个查询中计数列还是使用PHP?,php,mysql,Php,Mysql,我想我的问题是我试图在同一个查询中求和一个计数,这可以在php中实现以避免这种情况吗?“记录”列显示记录的数量,而“成本”和“成本”相加,这非常有效,但我想将这两列相加,以显示总计 Select tblcontacts.ContactFullName As Name, Count(tblcases.CaseID)As Records, Sum(tblcases.CaseCommission) As Costs From tblcontacts Inner Join tblca

我想我的问题是我试图在同一个查询中求和一个计数,这可以在php中实现以避免这种情况吗?“记录”列显示记录的数量,而“成本”和“成本”相加,这非常有效,但我想将这两列相加,以显示总计

Select
  tblcontacts.ContactFullName As Name,
  Count(tblcases.CaseID)As Records,
  Sum(tblcases.CaseCommission) As Costs
From
  tblcontacts Inner Join
  tblcases On tblcontacts.ContactID =
    tblcases.ContactAssignedTo
Group By
  tblcontacts.ContactFullName

在MySQL中,如果不添加另一个查询并对它们进行
联合,则无法执行此操作,例如:

Select
  tblcontacts.ContactFullName As Name,
  Count(tblcases.CaseID)As Records,
  Sum(tblcases.CaseCommission) As Costs
From
  tblcontacts Inner Join
  tblcases On tblcontacts.ContactID =
    tblcases.ContactAssignedTo
Group By
  tblcontacts.ContactFullName

UNION ALL

Select
  '--GRAND-TOTAL--',
  Count(tblcases.CaseID),
  Sum(tblcases.CaseCommission)
From
  tblcontacts Inner Join
  tblcases On tblcontacts.ContactID =
    tblcases.ContactAssignedTo

但是,在这种情况下,用PHP计算总计可能会提高性能,可能是在遍历行以构建表时。

如果要在PHP中循环显示结果集,则可以在遍历循环时对列求和

比如说

$sql = "your SQL here";

$query = mysql_query($sql);

$sum_records = $sum_costs = 0;

while ($r = mysql_fetch_object($query))
{
    // your other code here for whatever you're doing with the results
    $sum_records += $r->Records;
    $sum_costs += $r->Costs; 
}

// Now you have the two totals in $sum_records and $sum_costs.

最后将
与汇总一起使用。表的一次性扫描,因此它以性能为导向

Select
  tblcontacts.ContactFullName As Name,
  Count(tblcases.CaseID)As Records,
  Sum(tblcases.CaseCommission) As Costs
From
  tblcontacts Inner Join
  tblcases On tblcontacts.ContactID =
    tblcases.ContactAssignedTo
Group By
  tblcontacts.ContactFullName
WITH RollUP

非常感谢,太棒了,这正是我想要的。然后,我是否必须创建一个全新的查询来根据总计计算行摘要,或者是否也可以在这个查询中这样做
例如,我是否可以显示计数记录/总计以显示%-100条记录中的10条将显示10%。再次感谢您快速而有用的洞察力。您好,对不起,我想我可能浪费了您的时间,我忽略了一个重要的部分!你的代码给了我我想要的,查询总数,但我忘记了这些是过滤查询,所以事实上,一旦过滤发生,总数就不正确了!我将其用于jquery数据表,但无法使footer函数工作,所以我想我会自己尝试!我是否需要考虑上述因素来选择php路线?再次感谢。如果可以,你最好分成两个查询。。。听起来,如果你不这样做,你要做的将是一场维护噩梦。比使用
UNION
@Romil的手动方法要好得多,是的,很抱歉耽误了漫长的周末。这更好了谢谢,我今天早上刚刚测试过,时间还不多,但是每当我添加WHERE子句时,它都会在表尾输出两次摘要行?我还注意到,乍一看,它会输出摘要中的最后一行?例如,如果我的最后一个数据行是8 | Books | 2000英镑,那么它会在下面添加一个8 | Books | 10000英镑[列总和]的表摘要,我试图让它输出8 | Total | 10000英镑。会做一些阅读,是我努力实现的可能你知道吗?谢谢again@gary,如果你在帖子中提到输入和期望的输出,那么它可能会帮助我为你得到一个正确的答案。@Romil,是的,我很抱歉,我只是想在看到输出时意识到需要什么之前获得正确的结构。我将继续研究WHERE添加2个摘要行的原因。。再次感谢。是的,我同意使用汇总是使用SQL的方式,但我不确定OP是否询问如何通过PHP求和。不管怎样,他现在有几个选择:)