[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: рациональный рейтинг php+mysql
feniks_iopok
в общем есть база, где у каждого пользователя есть свой рейтинг(число). нужно на сайте вывести 10 пользователей с максимальным рейтингом, как осуществить лучше? каждый раз собирать двумерный массив с рейтингом\юзер_айди и потом сортировать его мне кажется не рационально, слишком большие затраты. как все таки лучше сделать? спасибо!



Спустя 3 минуты, 22 секунды (10.03.2012 - 21:53) Ser18 написал(а):
Ну если из БД, то ORDER BY `reiting` DESC LIMIT 10

Спустя 46 секунд (10.03.2012 - 21:54) Лена написал(а):
Какая структура участвующих таблиц? Может, там можно одним запросом вытянуть, а не забивать память массивами.

Спустя 33 минуты, 42 секунды (10.03.2012 - 22:28) feniks_iopok написал(а):
Ser18

$bonus = mysql_query("SELECT id FROM main_bd ORDER BY `bonus` DESC LIMIT 10");
$bonus = mysql_result($bonus,0);

так ведь будет работать? вытащится 10 айди пользователей с макс рейтингом? и через айди уже вытащу их рейтинг, или можно одним запросом все вытащить?

Спустя 5 минут, 58 секунд (10.03.2012 - 22:34) Ser18 написал(а):
Да
Но посмотрите про INNER JOIN и росто про INNER

Спустя 3 минуты, 25 секунд (10.03.2012 - 22:37) feniks_iopok написал(а):
а как потом из переменной бонус достать каждое из десяти значений?

Спустя 13 минут, 33 секунды (10.03.2012 - 22:51) Ser18 написал(а):
"SELECT users.`name`,
users.`email`,
users.`date`,
table_reiting.`reiting`
FROM `users`
INNER JOIN `table_reiting` ON users.`id_user` = table_reiting.`id_user_reiting`
ORDER BY table_reiting.`bonus` DESC LIMIT 10"


while($row = mysql_fetch_assoc($res)){
echo $row['name'];
echo $row['email'];
echo $row['date'];
echo $row['reiting'];
}

Спустя 1 минута, 34 секунды (10.03.2012 - 22:52) feniks_iopok написал(а):
Спасибо +

Спустя 31 минута, 15 секунд (10.03.2012 - 23:24) johniek_comp написал(а):
10 нет, надо вот так
$bonus = mysql_result($bonus,9);

тогда все возможно :)

Спустя 22 минуты, 43 секунды (10.03.2012 - 23:46) feniks_iopok написал(а):
запутался с этими запросами короче(
user posted image
http://imagepost.ru/images/a/sd/asdas_3.png
у меня вот такая таблица, и надо достать 10 айди с максимальным рейтингом..


$bonus = mysql_query("SELECT id FROM main_bd ORDER BY `bonus` DESC LIMIT 10");
$bonus = mysql_result($bonus,0);


с таким запросом я не знаю как достать все 10 значений, даже если поменять 0 на 9, тоже( пробовал $bonus[1] и тд. делать, не получается( простите за тупость, но все же..

Спустя 4 минуты, 9 секунд (10.03.2012 - 23:50) johniek_comp написал(а):
feniks_iopok
ой, я ступил, зачем там 9 вообще, сори
не знаю что там у тебя не получается, попробуй ещё так, но это наверно уже слишком :)

for($i=1; $i <=10; $i++)
{
$bonus = mysql_query("SELECT id FROM main_bd ORDER BY `bonus` DESC LIMIT 10");
echo mysql_result($bonus,$i).'<br>';
}

Спустя 8 часов, 29 минут, 58 секунд (11.03.2012 - 08:20) Игорь_Vasinsky написал(а):
ой как не хорошо запросами в цикле БД засыпать....

Спустя 25 минут, 54 секунды (11.03.2012 - 08:46) johniek_comp написал(а):
Игорь_Vasinsky
Ну если у него не получается сделать по нормальному, пусть так скопирует хоть smile.gif

Спустя 6 минут, 31 секунда (11.03.2012 - 08:53) Игорь_Vasinsky написал(а):
нее.. давать заведомо плохой совет - это подленько как минимум.

WHERE `id` = 1 OR `id` = 4 OR `id` = 10 .... 


1 запрос и ни каких циклов.



_____________
есть сайт, 3-4к уников в сутки. зарабатываю 100 рублей в день, почему так мало?
Быстрый ответ:

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