Сумма поля счета, чтобы получить общую сумму - PullRequest
1 голос
/ 08 июня 2011

Я очень новичок в этом и ищу какую-то помощь.Я копирую отчет в моей текущей системе со следующим кодом.

    <?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»

Я попробовал несколько решений, но безуспешно. Я думаю, что я борюсь с суммой поля счетчика, а затем отображаю счет.

Заранее спасибо за помощь.

Ответы [ 4 ]

5 голосов
/ 08 июня 2011

Как уже было сказано, никогда не используйте запрос внутри цикла, если он действительно не нужен.Чтобы получить всю сумму, если вы используете MySQL, вы можете использовать WITH ROLLUP .

2 голосов
/ 08 июня 2011

Я не уверен насчет производительности этого, но вы можете попробовать

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)

1 голос
/ 08 июня 2011

Сначала я неправильно понял вопрос.Это должно работать:

$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 голосов
/ 08 июня 2011
$countTotal = 0;
foreach() {
   $query = /*...*/
   $row = mysql_fetch_*($query);
   $countTotal += $row['count'];   
}

echo $countTotal;

В любом случае, никогда не помещайте запрос в цикл, используйте вместо этого Join.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...