[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Суммирование значений MySQL
Spichenka
проблема заключается в том, что не удаётся подсчитать сколько у accid всего state
структура таблицы
account_ref
accid | refid | state

133615 1 0
7382 1 1
133623 1 0
133625 1 0
7382 1 1
7382 1 1
каким sql запросом или с помощью php получить общую сумму state у определённого accid.

Сам скрипт:
<?php
$conn = mysql_connect ("$dbip:$dbport","$dblogin","$dbpass") or die ("Can't connect with host");
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_select_db($cdb, $conn) or die(mysql_error());
$resurs = mysql_query(" SELECT * FROM `account_ref` ORDER BY `state` DESC LIMIT 0 , 1000 ");
while($rows = mysql_fetch_object($resurs))
{
$i++;
$name = $rows->accid;
$level = $rows->refid;
$totalKills = $rows->state;


echo "
<tr>
<td>",$i,"</td>
<td><b>",$name,"</b></td>
<td>",$level,"</td>
<td>",$totalKills,"</td>
</tr>";
}
mysql_close($conn);

?>
</table>

Тоесть мне нужно сделать своеобразный топ 10...



Спустя 1 минута, 48 секунд (9.01.2011 - 18:14) sharki написал(а):
Используй mysql функцию SUM() почитай в гугле.

Спустя 3 минуты (9.01.2011 - 18:17) Spichenka написал(а):
Цитата (sharki @ 9.01.2011 - 15:14)
Используй mysql функцию SUM() почитай в гугле.

Увы руки у меня не из нужного места.
Могу предложить так, вставите нужную функцию в нужное место, я вам оплачу веб-манями...
Т.к. 3й день уже сношаюсь с этим скриптом...

Спустя 9 минут, 31 секунда (9.01.2011 - 18:26) sharki написал(а):
Вот примерный sql запрос
SELECT SUM(state) FROM `account_ref` WHERE `accid` = '7382'  


т.е вычислить общую сумму значений в поле state где id аккаунта = 7382

Спустя 4 минуты, 25 секунд (9.01.2011 - 18:31) Spichenka написал(а):
Цитата (sharki @ 9.01.2011 - 15:26)
Вот примерный sql запрос
SELECT SUM(state) FROM `account_ref` WHERE `accid` = '7382'  


т.е вычислить общую сумму значений в поле state где id аккаунта = 7382

Ну мне предложили немного другой вариант...
SELECT accid,sum(state) as statesum
FROM account_ref
WHERE accid=7382
GROUP BY accid;


Но мне не удаётся сунуть переменную вместо 7382...

Спустя 2 минуты, 7 секунд (9.01.2011 - 18:33) DmitryOpalev написал(а):
accid = '".$var."'

Или как-то так ;)

Спустя 10 минут, 36 секунд (9.01.2011 - 18:43) Spichenka написал(а):
суть, понял. теперь другой вопрос, как мне в функцию
{
$i++;
$name = $rows->accid;
$level = $rows->refid;
$totalKills = $rows->state;


echo "
<tr>
<td>"
,$i,"</td>
<td><b>"
,$name,"</b></td>
<td>"
,$level,"</td>
<td>"
,$totalKills,"</td>
</tr>"
;
}

засунуть селект:
SELECT accid,sum(state) as statesum
FROM account_ref
WHERE refid='".$level."'
GROUP BY refid;

?

Спустя 3 минуты, 41 секунда (9.01.2011 - 18:47) DmitryOpalev написал(а):
$query = mysql_query("SELECT accid,sum(state) as statesum
FROM account_ref
WHERE refid='"
.$level."'
GROUP BY refid; "
);
while ($row = mysql_fetch_assoc($query))
{
echo "
<tr>
<td>"
.$row['i']."</td>
<td><b>"
.$row['name']."</b></td>
<td>"
.$row['level']."</td>
<td>"
.$row['totalKills']."</td>
</tr>"
;
}

Спустя 6 минут, 11 секунд (9.01.2011 - 18:53) Spichenka написал(а):
Цитата (DmitryOpalev @ 9.01.2011 - 15:47)
$query = mysql_query("SELECT accid,sum(state) as statesum
FROM account_ref
WHERE refid='"
.$level."'
GROUP BY refid; "
);
while ($row = mysql_fetch_assoc($query))
{
echo "
<tr>
<td>"
.$row['i']."</td>
<td><b>"
.$row['name']."</b></td>
<td>"
.$row['level']."</td>
<td>"
.$row['totalKills']."</td>
</tr>"
;
}

Таким образом в ответ получаю пустую страницу =/
<?php
$conn = mysql_connect ("$dbip:$dbport","$dblogin","$dbpass") or die ("Can't connect with host");
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_select_db($cdb, $conn) or die(mysql_error());
$query = mysql_query("SELECT accid,sum(state) as statesum
FROM account_ref
WHERE refid='"
.$level."'
GROUP BY refid; "
);
while ($row = mysql_fetch_assoc($query))
{
echo "
<tr>
<td>"
.$row['i']."</td>
<td><b>"
.$row['name']."</b></td>
<td>"
.$row['level']."</td>
<td>"
.$row['totalKills']."</td>
</tr>"
;
}


mysql_close($conn);

?>

Спустя 2 минуты, 7 секунд (9.01.2011 - 18:55) DmitryOpalev написал(а):
В конце сделай echo mysql_error(), скажи, что получилось
Подключение к базе идет нормально?

Спустя 4 минуты, 24 секунды (9.01.2011 - 19:00) Spichenka написал(а):
Цитата (DmitryOpalev @ 9.01.2011 - 15:55)
В конце сделай echo mysql_error(), скажи, что получилось
Подключение к базе идет нормально?

поставил echo mysql_error ();
даже в 3х местах, до функции, после и в функции, ни одной ошибки...
подклюение по идее нормальное, т.к. со старым скриптом в 1м посте - всё отоброжает...

Спустя 1 минута, 3 секунды (9.01.2011 - 19:01) sharki написал(а):
Spichenka
А лучше всего выполни запрос напрямую в phpmyadmine и глянь че говорит.
т.е

SELECT accid,sum(state) as statesum
FROM account_ref
WHERE refid= [подставь значение которое существует в БД]
GROUP BY refid;

Спустя 5 минут, 9 секунд (9.01.2011 - 19:06) Spichenka написал(а):
Цитата (sharki @ 9.01.2011 - 16:01)
Spichenka
А лучше всего выполни запрос напрямую в phpmyadmine и глянь че говорит.
т.е

SELECT accid,sum(state) as statesum
FROM account_ref
WHERE refid= [подставь значение которое существует в БД]
GROUP BY refid;

mysql> SELECT accid,sum(state) as statesum
FROM account_ref
WHERE refid= 1

GROUP BY refid;
+--------+----------+
| accid | statesum |
+--------+----------+
| 133615 | 2 |
+--------+----------+
1 row in set
mysql>

Спустя 4 минуты, 25 секунд (9.01.2011 - 19:10) sharki написал(а):
он выдал то что ты ожидал? Подсчитай вручную, правильно ли он выдал суму

Спустя 2 минуты, 10 секунд (9.01.2011 - 19:13) Spichenka написал(а):
Цитата (sharki @ 9.01.2011 - 16:10)
он выдал то что ты ожидал? Подсчитай вручную, правильно ли он выдал суму

Да, правильно
вот так даже правильнее будет:
SELECT refid,sum(state) as statesum
FROM account_ref
WHERE refid= 1

GROUP BY refid;
+-------+----------+
|
refid | statesum |
+-------+----------+
|
1 | 2 |
+-------+----------+

1 row in set

Спустя 2 минуты, 20 секунд (9.01.2011 - 19:15) sharki написал(а):
Spichenka
Вот и всё =)
Дальше просто думай что тебе еще нужно, по идее в данный момент логика ясна

Спустя 13 минут, 20 секунд (9.01.2011 - 19:28) Spichenka написал(а):
Цитата (sharki @ 9.01.2011 - 16:15)
Spichenka
Вот и всё =)
Дальше просто думай что тебе еще нужно, по идее в данный момент логика ясна

Дак суть то и в том, то что не удаётся вывести результат через функцию =/

Спустя 4 минуты, 31 секунда (9.01.2011 - 19:33) sharki написал(а):
а ты правильно выводишь? в твоем случае это statesum т.е
$row = mysql_fetch_assoc($result);
echo $row['statesum'];

Спустя 8 минут, 29 секунд (9.01.2011 - 19:41) Spichenka написал(а):
Цитата (sharki @ 9.01.2011 - 16:33)
а ты правильно выводишь? в твоем случае это statesum т.е
$row = mysql_fetch_assoc($result);
echo $row['statesum'];

ну выводить я уже пытаюсь таким способом:

<?php
$conn = mysql_connect ("$dbip:$dbport","$dblogin","$dbpass") or die ("Can't connect with host");
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_select_db($cdb, $conn) or die(mysql_error());
$query = mysql_query("SELECT refid,sum(state) as statesum
FROM account_ref
WHERE refid='"
.$level."'
GROUP BY refid; "
);
while ($row = mysql_fetch_assoc($query))
{
echo "
<tr>
<td>"
.$row['i']."</td>
<td><b>"
.$row['name']."</b></td>
<td>"
.$row['level']."</td>
<td>"
.$row['totalKills']."</td>
</tr>"
;
}


mysql_close($conn);

?>

в итоге ничего, белый лист...

Спустя 6 минут, 52 секунды (9.01.2011 - 19:48) sharki написал(а):
Запрос тебе выдает только две переменные refid и statesum и всё! а ты пытаешься получить несуществующие значения, в запросе укажи какие поля тебе еще нужны.

Спустя 25 минут, 44 секунды (9.01.2011 - 20:14) sharki написал(а):
<?php
$conn = mysql_connect ("$dbip:$dbport","$dblogin","$dbpass") or die ("Can't connect with host");
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_select_db($cdb, $conn) or die(mysql_error());
$query = mysql_query("SELECT refid, sum(state) as statesum, i , name, level, totalKills // видишь тут
// ты перечисляешь что ты хочешь получить из БД
FROM account_ref
WHERE refid='"
.$level."'
GROUP BY refid "
);
while ($row = mysql_fetch_assoc($query))
{
echo "
<tr>
<td>"
.$row['i']."</td> // и здесь ты уже эти поля выводишь
<td><b>"
.$row['name']."</b></td>
<td>"
.$row['level']."</td>
<td>"
.$row['totalKills']."</td>
</tr>"
;
}


mysql_close($conn);

?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.