php вычисляет первые десять процентов из базы данных?

У меня успешно работает этот поиск, который возвращает навыки и атрибуты игроков. Я хочу получить первые десять процентов в определенных столбцах. Я пытался использовать это:

$j=0;
while($percentile_row = mysql_fetch_array($percentile_result)){
    echo $percentile_row['user_id'].'<br />';
    $j++;
}
echo 'Total: '.$j.'<br />';
echo round(100/$j,1);

$players_worth = round(100/$j,1);

while($players_worth > 10){
    echo 'adding<br/>';
    $players_worth + $players_worth;
}

Это казалось простым способом получить его. Просто часть $players_worth + $players_worth; не работает, когда она находится в цикле while. Это работает, если я просто повторяю это.

Или есть что-то, что я могу добавить к запросу, чтобы он выбирался в процентах? Я должен сделать это примерно для 15 столбцов.

Это мой существующий запрос:

SELECT user_id FROM Players ORDER BY user_id DESC

Спасибо за любые советы, которые у вас могут быть.

Редактировать:
Я пробовал это, но не повезло, когда я var_dump, он просто говорит «bool (false)»: MySQL: ОГРАНИЧИТЬ процентом от количества записей?


person stinkysGTI    schedule 14.02.2014    source источник
comment
«Просто $players_worth + $players_worth; часть не работает» — она работает, потому что это правильное выражение; но вы ничего не делаете с результатом этого выражения. Чего вы хотите этим добиться? Вы хотите удвоить значение $players_worth? Затем сделайте это, используя f.e. $players_worth *= 2.   -  person CBroe    schedule 15.02.2014
comment
Я хочу добавить себя к себе, но не удваивать себя каждый раз, потому что число выйдет из-под контроля. В настоящее время создается число 1,4, поэтому я хочу добавлять 1,4 при каждом проходе, но по мере добавления в таблицу новых записей это число будет уменьшаться, поэтому я не могу сделать его статичным.   -  person stinkysGTI    schedule 15.02.2014
comment
Ну, вы не можете добавлять одно и то же значение снова и снова, используя только одну переменную…   -  person CBroe    schedule 15.02.2014
comment
Ах, как и $players_worth + $players_worth2; работать, придавая им одинаковое значение?   -  person stinkysGTI    schedule 15.02.2014
comment
Это по-прежнему выражение, которое просто возвращает возвращаемое значение, но вы ничего с ним не делаете. Похоже, тебе пора научиться основам, приятель.   -  person CBroe    schedule 15.02.2014


Ответы (2)


Если вы уже знаете количество записей в базе данных, вы можете использовать LIMIT:

"SELECT user_id FROM Players ORDER BY user_id DESC LIMIT ".$rowCount*$percentage/100

Я не знаю способа использовать процент непосредственно в запросе, если только вы уже не знаете точку отсечки для проверяемого значения, что означает, что вы уже просмотрели базу данных и проверил все значения.

person Phil Perry    schedule 14.02.2014
comment
Я думал об этом, но количество строк со временем изменится. Я думаю, я мог бы сделать запрос, чтобы получить общее количество, поместить его в переменную и использовать это для математики в следующем запросе. - person stinkysGTI; 15.02.2014
comment
Да, вы должны знать количество строк так или иначе. Вероятно, не повредит, если одна или две строки будут вставлены или удалены в середине этого, если количество строк не слишком устарело. Посмотрите, сможете ли вы совместить подсчет с каким-то другим запросом, который вам все равно нужно выполнить. - person Phil Perry; 15.02.2014

Я получил это, и вот как я это сделал:

Сначала я получил все строки, затем...

echo 'Total rows in table: '.$j.'<br />';

$twentyfive = floor($j*.25);
$fifteen = floor($j*.15);
$ten = floor($j*.1);


echo $ten.' '.$fifteen.' '.$twentyfive.'<br /><br />';


$topten=0;

while($topten < $ten && $percentile_row2 = mysql_fetch_array($percentile_result2)){

    $change =   "UPDATE Players SET " . $column['field'] ."=concat(" . $column['field'] . ",'%') WHERE user_id='" . $percentile_row2['user_id'] . "'";

    $wpdb->get_results($change);

    echo '<strong>in top 10%</strong> - '.$percentile_row2['field_1'].' - '.$percentile_row2['user_id'].'<br />';

$topten++;

}

И так далее для других процентилей. Все эхо было только для того, чтобы отследить его.

person stinkysGTI    schedule 14.02.2014