Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/371.32  21 Jul 2000  22:05:42
 To : rychkov@rubtsovsk.ru
 Subject : Re: Промежуточные итоги в цикле
 -------------------------------------------------------------------------------- 
 
 rrr> Столкнулся с такой проблемкой, при выводе из INFORMIX SQL запроса
 rrr> потребовалось подбивать промежуточные итоги. При испольовании
 rrr> стандартного while это достаточно криво организуется.
 
 rrr> $sth->execute() or die "execute error\n";
 rrr> while(@ex = $sth->fetchrow()){ # Цикл построчного формирования отчета
 rrr> printf("%s %s %s",$ex[0],$ex[1],$ex[2],$ex[3]);
 rrr> # Подсчет общих итогов по таблице
 rrr> $cost_r  =$cost_r   + $ex[1];
 rrr> $cost_d  =$cost_d   + $ex[2];
 rrr> } # Конец цикла по строкам таблицы
 
 rrr> Как организовать цикл вывода результатов запроса, чтобы иметь возможность
 rrr> контролировать изменение значения некого параметра запроса $ex[0] и
 rrr> выводить результаты суммирования по  $ex[0]?  SQL запрос выдает уже
 rrr> отсортированный по нужному реквизиту вывод.
 
 rrr> Hужно получить:
 
 rrr> 1. Арбуз 2 шт 5 кг
 rrr> 1. Дыня  2 шт 10 кг
 rrr> 1. Тыква 1 шт 5 кг
 rrr> Итого по 1: 5 шт 20 кг
 rrr> 2. Слива 2 шт 5 кг
 rrr> 2. Персик  2 шт 10 кг
 rrr> 2.  1 шт 5 кг
 rrr> Итого по 2: 5 шт 20 кг
 rrr> 3. Арбуз 2 шт 5 кг
 rrr> 3. Дыня  2 шт 10 кг
 rrr> 3. Тыква 1 шт 5 кг
 rrr> Итого по 1: 5 шт 20 кг
 
 rrr> Подскажите. Любителей отсылать к документации и SPAN просьба не
 rrr> беспокоиться.
 
 А к детской книжке по основам программирования можно?
 
 my $ex0;
 my ($cost_r,$cost_d) = (0,0);
 while (...) {
   if (defined $ex0 and $ex0 ne $ex[0]) {
    printf "Итого по $ex0: $cost_r шт. $cost_d кг\n";
    $cost_r = $cost_d = 0; $ex0 = $ex[0];
   }
   printf ...
   $cost_r += $ex[2];
   $cost_d += $ex[3];
 }
 printf "Итого по $ex0: $cost_r шт. $cost_d кг\n" if defined $ex0;
 
 -- 
 Счастливо!
   Ран.
 --- ifmail v.2.14.os-p7-tma3
  * Origin: MemoNet (2:5020/371.32@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Промежуточные итоги в цикле   Artem Chuprina   21 Jul 2000 22:05:42 
Архивное /ru.perl/34730de58769.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional