认为我的问题是我试图在同一个查询中计算一个计数,这可以在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
答案 0 :(得分:4)
如果不添加其他查询并执行UNION
个查询,则无法在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中的总计,可能在迭代行来构建表时。
答案 1 :(得分:3)
最后使用With RollUp
。表的单次扫描,因此它以性能为导向。
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
答案 2 :(得分:0)
如果要循环遍历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.