Сумирование суммы по нарастающей

392
13 января 2017, 11:28

Делаю вывод сумм по месяцам:

$OReqSQL = mysql_query("SELECT LPAD(YEAR(MIN(`datesort`)),4,'0'),LPAD(MONTH(MIN(`datesort`)),2,'0'),MONTHNAME(MIN(`datesort`)) FROM dfort_finance_client WHERE contract = '$id_contract'GROUP BY MONTH(datesort) ORDER BY dfort_finance_client . datesort ASC");
while ($Req = mysql_fetch_array($OReqSQL)) {
    $PayDohodSQL = mysql_query("SELECT SUM(summ) FROM dfort_finance_client WHERE contract = '$id_contract' AND datesort BETWEEN '".$Req[0]."-".$Req[1]."-01' AND '".$Req[0]."-".$Req[1]."-31' AND type_pay = '1' ORDER BY id DESC"); 
    $PayDohodPoFO = mysql_result($PayDohodSQL, 0);
    $PayRashodSQL = mysql_query("SELECT SUM(summ) FROM dfort_finance_client WHERE contract = '$id_contract' AND datesort BETWEEN '".$Req[0]."-".$Req[1]."-01' AND '".$Req[0]."-".$Req[1]."-31' AND type_pay = '2' ORDER BY id DESC"); 
    $PayRashodPoFO = mysql_result($PayRashodSQL, 0);
    $SaldoPoFO = $PayDohodPoFO - $PayRashodPoFO;
    echo $SaldoPoFO;
}

Как мне теперь сделать вывод сумм по нарастающей? Т.е. если Январь: 100, Февраль: 50, Март: 120, то должно выводить в другой таблице: Январь: 100, Февраль: 150, Март: 270.

Answer 1

Ваша задача решается одним SQL-запросом:

SELECT A.*, @s:=@s+dohod-rashod Saldo
  FROM (
   SELECT LPAD(YEAR(MIN(`datesort`)),4,'0') Y, LPAD(MONTH(MIN(`datesort`)),2,'0') M,
          MONTHNAME(MIN(`datesort`)) MName,
          MIN(datesort) datesort,
          SUM( IF(type_pay=1,summ,0) ) dohod, SUM( IF(type_pay=2,summ,0) ) rashod
     FROM dfort_finance_client
    WHERE contract = $id_contract
    GROUP BY MONTH(datesort)
  ) A, (select @s:=0) B
 ORDER BY datesort

Хотя, конечно, можно и не делать внешний уровень запроса, считающий нарастающий итог, а посчитать его в PHP:

var $Saldo=0;
while ($Req = mysql_fetch_array($OReqSQL)) {
  $Saldo=$Saldo+$Req['dohod']-$Req['rashod'];
  echo ...
}
READ ALSO
Как тестировать загрузку файлов? [требует правки]

Как тестировать загрузку файлов? [требует правки]

Как передать через тест файл, например картинку?

306
Проблема с выходом из аккаунта и удалением Cookies при использовании ЧПУ

Проблема с выходом из аккаунта и удалением Cookies при использовании ЧПУ

Как работает: В настройках CMS Указывю ссылки вида /?qa=123/why-do-birds-sing Залогиненные пользователи через сайт - без проблем выходят из ак-ка Залогиненнные...

392
Каr добавить 10к товаров в магазин на OpenCart? [требует правки]

Каr добавить 10к товаров в магазин на OpenCart? [требует правки]

У меня есть файл JSON где 10к товаровУ них описаны, цены и т

376
Как через PHP добавить дату в базу MySQL

Как через PHP добавить дату в базу MySQL

Доброго времени сутокКак через PHP добавить дату в базу MySQL?

491