структура таблицы
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 запрос
т.е вычислить общую сумму значений в поле state где id аккаунта = 7382
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 |
Таким образом в ответ получаю пустую страницу =/
<?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 и глянь че говорит.
т.е
А лучше всего выполни запрос напрямую в 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 |
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); |
ну выводить я уже пытаюсь таким способом:
<?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);
?>