求和;在1个查询中计数列还是使用PHP?
我想我的问题是我试图在同一个查询中求和一个计数,这可以在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
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求和。不管怎样,他现在有几个选择:)