Задавайте вопросы, мы ответим
Вы не зашли.
добрый день!
У меня к Вам следующий вопрос:
вот часть кода, в которой я делаю выборку из таблицы, после чего вывожу итог на экран.
а как модифицировать запрос, чтобы у меня сумма по полу acres и количество записей выводилась в зависимости от значения значения status?
в поле status только виксированные значения (open, closed)
спасибо всем за помощь,
с уважением, Владимир.
require (".connect.php"); $query2 = "SELECT qq1, qq2, SUM(acres), count(*), status FROM table1 order by status"; $result9 = mysql_query($query2) or die(mysql_error("Error")); $col1=0; $ac1=0; ?> <br /> <table width=780 border="1" cellspacing="0" cellpadding="0" FONT class=body align=center valign=top> <tr> <th>qq1</th> <th>qq2</th> <th>Total acres</th> <th>Total lines</th> <th>Status</th> </tr> <?php while($row = mysql_fetch_array($result9)){ ?> <tr align=center> <td><?php echo $row['qq1']; ?></td> <td><?php echo $row['qq2']; ?></td> <td><?php echo round($row['SUM(acres)'],3); ?></td> <td><?php echo $row['count(*)']; ?></td> <td><?php echo $row['status']; ?></td> </tr> <?php $col1=$col1+$row['count(*)']; $ac1=$ac1+$row['SUM(acres)']; } echo "</table>"; echo "total acres =".round($ac1,3)."<BR>"; echo "total lines =".round($col1,0)."<BR>";
Отредактированно volodymyr_d (12.07.2010 17:58:23)
Неактивен
GROUP BY status, наверное, Вы имеете в виду?
Неактивен
не совсем. Сейчас у меня запрос выглядит так:
$query2 = "SELECT qq1, qq2, SUM(acres), count(*), status FROM table1 where qq1 = '".$area1."' GROUP BY qq2 order by status";
в итоге я имею таблицу, где считается сумма и кол-во элементов только в конце, а мне надо посчитать суму и кол-во элементов для qq1, qq2, sum(acres) - но для каждого поля status. ( к примеру:
Russia Saratov 512.596 20 closed
Russia Moscow 3.72 1 closed
Ukraine Kiev 28.41 1 closed
Ukraine Lviv 721.437 17 closed
Russia Viborg 1371.88 44 Open
Russia Rostov 1501.139 39 Open
Russia Novgorod 440.517 53 Open
Russia Sochi 3713.16 113 Open)
сколько полей clodes и open соответственно.
спасибо.
Неактивен
Брр, ничего не понимаю Этот запрос — не такой же, как в изначальном
сообщении. Если второй запрос правильный, то GROUP BY qq2, status.
Ну или приведите структуру таблицы с данными, и то, что хотите получить
на выходе. PHP-обертки писать не надо
Неактивен
правильных запрос - второй.
я хочу в итого получить отчет следующего вида:
Russia Saratov 512.596 20 closed
Russia Moscow 3.72 1 closed
Ukraine Kiev 28.41 1 closed
Ukraine Lviv 721.437 17 closed
total acres: 1266.163
total lines: 39
Russia Viborg 1371.88 44 Open
Russia Rostov 1501.139 39 Open
Russia Novgorod 440.517 53 Open
Russia Sochi 3713.16 113 Open
total acres: 7026.696
total lines: 249
Неактивен
Вы считаете сумму в PHP, а не в MySQL. Вопросы по PHP обсуждаются на
webew.ru
Неактивен
спасибо
Неактивен
я попытался решить вопрос так:
$qq1=$qq2=$qq3=$qq4=0; while($row = mysql_fetch_array($result9)){ if ($row['status']=="Open") {$qq1=$qq1+$row['count(*)']; $qq2=$qq2+$row['SUM(acres)']; } elseif ($row['status']=="Closed") {$qq3=$qq3+$row['count(*)']; $qq4=$qq4+$row['SUM(acres)']; }
но этот вариант меня не устраивает, т.к. надо соблюдать регистр при вводе значений Open, Closed и при других значениях в поле 5 - этот код не будет рабочим.
спасибо за помощь,
с уважением, Владимир.
Неактивен
Можете запоминать предыдущее значение поля. У Вас сортировка по нему, поэтому все одинаковые значения будут рядом.
И я все еще считаю, что php следует обсуждать на webew.ru.
Неактивен