Forum Webscript.Ru
Общие => Базы данных => Тема начата: APL от 19 Октября 2005, 18:34:59
-
Есть таблица, допустим такая:
CREATE TABLE `temp` (`id` DOUBLE AUTO_INCREMENT, `num` DOUBLE, PRIMARY KEY(`id`), UNIQUE(`id`))
данные:
id | num
1 | 734
2 | 70
3 | 6
4 | 44
можно ли одним-двумя запросами обновить поле \'num\', чтобы минимальное значение было 1, а максимальное равнялось количесву записей, при чем если мы отсортируем по \'num\' - порядок должен остаться прежним.
Заранее спасибо.
-
APL
в чем проблемма?
1 select
1 цикл
и
COUNT(num) update ...
и всех делов...
-
Можно подробнее? Не понял.
После преобразования приведенные выше данные должны стать такими:
id | num
1 | 4
2 | 3
3 | 1
4 | 2
-
APL
ну допустим на перле я бы написал примерно так:
my $Data=$D->row_hash("SELECT id, num FROM table ORDER BY num");
my $NI=0;
while ($Data->[$NI])
{
$D->proc("UPDATE table SET num=$NI WHERE id=".$Data->[$NI]{\'id\'}."");
$NI++
}
ещё коменты требуються?
-
Дык это понятно... а вот без цикла...
-
APL
ну напиши функцию... но без цикла все равно не обойдеться... и вообще зачем их упорядочивать?