SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.07.2010 17:50:17

volodymyr_d
Участник
Зарегистрирован: 12.07.2010
Сообщений: 5

подскажите по запросу

добрый день!
У меня к Вам следующий вопрос:
вот часть кода, в которой я делаю выборку из таблицы, после чего вывожу итог на экран.
а как модифицировать запрос, чтобы у меня сумма по полу 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)

Неактивен

 

#2 12.07.2010 18:21:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: подскажите по запросу

GROUP BY status, наверное, Вы имеете в виду?

Неактивен

 

#3 12.07.2010 20:25:25

volodymyr_d
Участник
Зарегистрирован: 12.07.2010
Сообщений: 5

Re: подскажите по запросу

не совсем. Сейчас у меня запрос выглядит так:

Код:

 $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 соответственно.
спасибо.

Неактивен

 

#4 12.07.2010 20:41:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: подскажите по запросу

Брр, ничего не понимаю smile Этот запрос — не такой же, как в изначальном
сообщении. Если второй запрос правильный, то GROUP BY qq2, status.

Ну или приведите структуру таблицы с данными, и то, что хотите получить
на выходе. PHP-обертки писать не надо wink

Неактивен

 

#5 12.07.2010 21:30:23

volodymyr_d
Участник
Зарегистрирован: 12.07.2010
Сообщений: 5

Re: подскажите по запросу

правильных запрос - второй.

я хочу в итого получить отчет следующего вида:
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

Неактивен

 

#6 12.07.2010 22:31:43

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: подскажите по запросу

Вы считаете сумму в PHP, а не в MySQL. Вопросы по PHP обсуждаются на
webew.ru smile

Неактивен

 

#7 13.07.2010 07:23:13

volodymyr_d
Участник
Зарегистрирован: 12.07.2010
Сообщений: 5

Re: подскажите по запросу

спасибо

Неактивен

 

#8 14.07.2010 09:03:16

volodymyr_d
Участник
Зарегистрирован: 12.07.2010
Сообщений: 5

Re: подскажите по запросу

я попытался решить вопрос так:

Код:

$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 - этот код не будет рабочим.
спасибо за помощь,
с уважением, Владимир.

Неактивен

 

#9 14.07.2010 09:42:02

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: подскажите по запросу

Можете запоминать предыдущее значение поля. У Вас сортировка по нему, поэтому все одинаковые значения будут рядом.

И я все еще считаю, что php следует обсуждать на webew.ru.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson