2011-06-07 123 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