Присвоить значение поля

  • Автор темы fashion guide
  • Дата начала

fashion guide

Guest
Присвоить значение поля

$result = mysql_query ("SELECT * FROM reiting ORDER BY raiting DESC");
$b==0;
for ($i=0; $i<mysql_num_rows($result); $i++)
{
$b++;
$query = "UPDATE reiting SET place = '$b'";
}
$result = mysql_query($query);

С этим запросом получается, что при запросе он находит, например, 10 удовлетворяющих значений. При абдейте поля place получается, что у всех 10-ых одно и то же. Я хочу, чтобы у каждого были значения place разные.. то есть, от 1 и дальше по порядку.
 

lucas

Guest
Код:
SET @num := 0 ;
CREATE TEMPORARY TABLE tmp (SELECT * FROM table ORDER BY rating DESC) ;
UPDATE tmp SET place = (@num := @num + 1) ;
REPLACE table (SELECT * FROM tmp) ;
 

fashion guide

Guest
А есть ли, такая функция в таблице, как автомотическая подстановка значения.. Например.

ID | Raiting
-----------------
1 | 54
2 | 39
3 | 30
4 | 22

Принцип такой, что в рэйтинге идет упорядочивание по убыванию, а в ID автомотически подставляется значение по возростанию, от самого первого до последнего.

-~{}~ 11.04.04 15:25:

Originally posted by lucas
Код:
SET @num := 0 ;
CREATE TEMPORARY TABLE tmp (SELECT * FROM table ORDER BY rating DESC) ;
UPDATE tmp SET place = (@num := @num + 1) ;
REPLACE table (SELECT * FROM tmp) ;
сердцем чувтсвую, что логично и правильно. Но, с синтаксисом SQL у меня проблема.. Можешь представить то же самое, но в формате PHP и MySQL?
 

lucas

Guest
Каждую из вышепреведенных строк следует использовать в качестве первого параметра функции [m]mysql_query[/m].
Этот код следует выполнять после любого изменения значения столбца rating.
 

ForJest

- свежая кровь
[sql]
SET @num:=0;
UPDATE reiting SET place = @num:= @num+1 ORDER BY raiting DESC;
[/sql]
 
Сверху