Forum Webscript.Ru

Общие => Базы данных => Тема начата: APL от 19 Октября 2005, 18:34:59

Название: SQL: Как упорядочить значения?
Отправлено: 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\' - порядок должен остаться прежним.

Заранее спасибо.
Название: SQL: Как упорядочить значения?
Отправлено: commander от 19 Октября 2005, 18:50:36
APL
в чем проблемма?
1 select
1 цикл
и
COUNT(num) update ...
и всех делов...
Название: SQL: Как упорядочить значения?
Отправлено: APL от 19 Октября 2005, 19:05:21
Можно подробнее? Не понял.

После преобразования приведенные выше данные должны стать такими:

id | num
1 | 4
2 | 3
3 | 1
4 | 2
Название: SQL: Как упорядочить значения?
Отправлено: commander от 19 Октября 2005, 19:30:49
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++
}
ещё коменты требуються?
Название: SQL: Как упорядочить значения?
Отправлено: APL-Guest от 19 Октября 2005, 20:31:59
Дык это понятно... а вот без цикла...
Название: SQL: Как упорядочить значения?
Отправлено: commander от 20 Октября 2005, 16:29:03
APL
ну напиши функцию... но без цикла все равно не обойдеться...  и вообще зачем их упорядочивать?