Помогите с выборкой из MySQL

goodier
На сайте с 10.03.2009
Offline
36
521

Здравствуйте !

Возникла проблема с выбором максимального значения из MySQL БД

Есть таблица с Юзерами которая содержит колонки

(Sub_code) - Идентификатор к которой все они привязаны

Online - статус онлайн активености

login - логин юзера

cashin - общая сумма которую он внес в которой может быть несколько одинаковых цифр

cashout - общая сумма которую он получил в которой может быть несколько одинаковых цифр


$useronline = mysql_fetch_array(mysql_query("SELECT login,cashin,cashout FROM users WHERE subagent=".$subagent." AND online='yes'"));
$num = 0;
$a1 = "";
$b1 = "";
while ($online = mysql_fetch_array($useronline))
{
$num += 1;
$cashin = $online['cashin'];
$cashout = $online['cashout'];
$login[$num] = $online['login'];
$cashitog[$num] = $cashin-$cashout;
$zapyataya = ',';
if ( $num == $max_user ) { $zapyataya = ""; }
$a .= " $cashitog[$num]$zapyataya";
$b .= " $login[$num]$zapyataya";
}
$aa = array($a);
$bb = array($b);
$aaa = max($a); // юзер который больше всего понес убытки

Не получается выбрать из массива число и логин юзера который больше всего понес убытки.

ПОМОГИТЕ ПЛИЗ НА СТЕНКУ ГОТОВ УЖЕ ЛЕЗТЬ

maldivec
На сайте с 04.11.2008
Offline
160
#1

А зачем два раза mysql_fetch_array?

И вообще, то что вы пытаетесь тут сделать можно реализовать через один SQL запрос... (если вам в итоге нужен только один логин)

Повнимательнее глянул ваш код - вы что вообще хотите сделать?! И почему именно так?

S
На сайте с 07.06.2010
Offline
1
#2

goodier, вы $useronline два раза суете в mysql_fetch_array.

А по поводу рационализации вопроса, поясните подробнее суть проблемы.

Разрабатываю любые приложения, используя PHP/MySQL (/ru/forum/507878) ICQ # 140-840-100
maldivec
На сайте с 04.11.2008
Offline
160
#3

Это вот в общих чертах, вроде должно работать....


$retid=mysql_query("SELECT login, (cashin - cashout) AS cashitog FROM users WHERE subagent=".$subagent." AND online='yes' ORDER BY cashitog DESC LIMIT 1 ");
$online = mysql_fetch_array($retid);

echo "Юзер ". $online['login'] . " понес больше всего убытков на " . $online['cashitog '];
goodier
На сайте с 10.03.2009
Offline
36
#4

maldivec

Cпасибо за помощь!

Есть еще вопрос, а если в таблице совпадет число убытка у юзеров, как тогда быть?

goodier добавил 08.06.2010 в 21:47

Если у нескольких Юзеров будет одинаковая цифра убытка, как выбрать логин юзера не первого из таблицы а каждый раз разного

пробовал вот так

$retid=mysql_query("SELECT login, (cashin - cashout) AS cashitog FROM users WHERE subagent=".$subagent." AND online='yes' ORDER BY cashitog");

$num = mysql_num_rows($retid);
$i = rand(0,$num-1);
for ($k=0;$k<$i;$k++)
$online = mysql_fetch_array($retid[$k]);
$winner = $online['login'];
echo "1 $winner";

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий