2011-06-07 115 views
1

我对此很新,希望得到一些帮助。我正在使用以下代码复制当前系统中的报告。计数字段的总和以获得总计

<?php 
    foreach ($possibleSanctionsAssociativeArray as $currentSanction => $currentSanctionDetailsArray) 
    { 
     $tableHeadersArray = array ('Home Office',' Total'); 

     $query = "SELECT home_office, COUNT(file_id) FROM cases WHERE ".$currentSanction."='Yes' and ($refdate>='$begindate' AND $refdate<='$enddate') GROUP BY home_office"; 

     $title = "<p class='report_title'> <b>".getSanctionDescriptiveName($currentSanction)."</b>"; 
     simpleStatTable($query, $tableHeadersArray, $title); 
    } 
    ?> 

它显示一个表有两列两行:

HOME OFFICE | Total 

OJA   |  82 

ORL   | 634 

我想它显示第三排,上面写着“合计总额| 716”

我尝试了好几种没有运气的解决方案,我想我正在挣扎计数字段的总和,然后显示计数。

感谢您提前提供的所有帮助。

+0

什么是'simpleStatTable()'? – 2011-06-07 20:24:32

+0

@Bala R当你读到这篇文章时,你可能会打砸自己 - 但我并不完全确定,我认为这是一张桌子的设置。我没有写这个代码,但我有任务来操纵它。因为我对MySQL/PHP有一个非常基本的知识(就像你不知道我最初的问题那样),并且随时都在学习这一事实。我并不理想,但有时候我们必须做我们必须做的事情。 – TheTwo 2011-06-08 02:40:00

回答

1

我首先误解了这个问题。这应该工作:

$query = "SELECT home_office, COUNT(file_id) FROM cases 
      WHERE ".$currentSanction."='Yes' and ($refdate>='$begindate' AND $refdate<='$enddate') 
      GROUP BY home_office 
      UNION 
      SELECT 'Overall Total' AS home_office, COUNT(file_id) FROM cases 
      WHERE ".$currentSanction."='Yes' and ($refdate>='$begindate' AND $refdate<='$enddate');"; 
+0

感谢您的输入,但我需要显示分解和总计。 – TheTwo 2011-06-07 20:36:26

+0

@TheTwo更新。这应该做你想做的。 – trutheality 2011-06-07 20:52:09

+0

再次感谢...尝试了它 - 仍然存在一些显示问题(重复总计行中的家庭办公室名称),但除此之外它的工作原理。我会再玩一些,但我需要去约会。非常感谢! – TheTwo 2011-06-07 21:03:23

0
$countTotal = 0; 
foreach() { 
    $query = /*...*/ 
    $row = mysql_fetch_*($query); 
    $countTotal += $row['count']; 
} 

echo $countTotal; 

反正从来不把查询一个循环内,可按加入。

+0

感谢您的帮助。但它已经停止在一起显示表格。就像我说的,我是新手,正在努力学习。我已经看到了加入信息,但是如何用一张桌子写一个? – TheTwo 2011-06-07 20:50:25

2

我不确定这一个对性能的影响,但你可以尝试

SELECT SUM(totals) FROM (SELECT home_office, COUNT(file_id) AS totals FROM cases WHERE ".$currentSanction."='Yes' and ($refdate>='$begindate' AND $refdate<='$enddate') GROUP BY home_office AS counts_table)

5

正如有人说,从来没有使用查询在一个循环内,除非它真的需要。关于获取全部数据,如果您使用MySQL,您可以使用WITH ROLLUP

+1

从来没有听说过这个。 WOW – dynamic 2011-06-07 20:35:47

+0

感谢您的意见。我也试过这个......桌子停止显示在一起。我想我需要像前面提到的那样用一个连接语句来重写整个代码。 – TheTwo 2011-06-07 20:54:34