Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рейтинг
 
 автор: serenya1983   (15.09.2010 в 15:14)   письмо автору
 
 

В таблице есть поле рейтинг, подскажите как узнать на каком месте это рейтинг?. т.е.
есть записи рейтинга:
232
123
443
12
если выбрано из таблици 123, то значит на третьем месте (1-е: 433, 2-е: 232)
Спасибо.

  Ответить  
 
 автор: deimand   (15.09.2010 в 15:24)   письмо автору
 
   для: serenya1983   (15.09.2010 в 15:14)
 

$i = 0;
while()
{
  $i++;
  echo $i . '-е: ';
}

это не ваш случай?

  Ответить  
 
 автор: serenya1983   (15.09.2010 в 15:28)   письмо автору
 
   для: deimand   (15.09.2010 в 15:24)
 

через PHP будет очень очень долго если в таблице миллионы записей, можно ли средствами MySQL узнать положение в рейинге!??
А так же можно ли через MySQL подсчитать общий рейтинг, т.е. сложить вся строки поля таблицы!?

  Ответить  
 
 автор: Гавриленко Дмитрий   (21.09.2010 в 20:39)   письмо автору
 
   для: serenya1983   (15.09.2010 в 15:28)
 

А че тут сложного???

<?
//Подключаемся к базе

//Достаем значения из таблицы юзеры или рейтинг(на ваше усмотрение)
$table reyting;  //указываем название таблицы
$num 10//указываем кол-во выводимых рейтингов
//Делаем запрос
$select mysql_query("SELECT * FROM $table ORDER BY reyting DESC LIMIT $num ");
$row mysql_fetch_array($select);

//Создаем цикл который будет выводить список рейтинга.

$i 0;  //Куда же без традиционного $i )))

while($row mysql_fetch_array($select))
{
     
$i++;
     echo 
'Место в рейтинге- '.$i.' Имя юзера '.$row['name']. 'Его рейтинг '.$row['reyting'].;
}
?>

  Ответить  
 
 автор: serenya1983   (22.09.2010 в 06:12)   письмо автору
 
   для: Гавриленко Дмитрий   (21.09.2010 в 20:39)
 

Что так можно это понятно!
Я умел ввиду что бы запрос к БД выдал место в рейтинги, а не простой перебор через цикл PHP. Если человек на 345 674 месте, то так будет перебираться очень долго!!!

  Ответить  
 
 автор: neadekvat   (22.09.2010 в 07:36)   письмо автору
 
   для: serenya1983   (15.09.2010 в 15:14)
 

Если дан сам рейтинг ($rating):
SELECT COUNT(*) FROM users WHERE rating > $rating

Если дан id пользователя, то сначала нужно вытащить рейтинг
SELECT COUNT(*) FROM users WHERE rating > (SELECT rating FROM users WHERE id = $user_id)

Правда, по-моему, еще +1 надо к этому числу сделать (COUNT(*) + 1 as count) - тогда будет искомое место. Но надо проверять (в голове вычислить с утра ресурсов еще нет, как нет времени проверить на рабочей базе).

  Ответить  
 
 автор: serenya1983   (23.09.2010 в 13:07)   письмо автору
 
   для: neadekvat   (22.09.2010 в 07:36)
 

Спасибо, так получилось!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования