Re: asignar valor creciente

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To:
Cc: Arturo Munive <arturomunive(at)gmail(dot)com>, usuario anonimo <opinante(dot)anonimo(at)gmail(dot)com>, Postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: asignar valor creciente
Date: 2007-06-15 14:35:23
Message-ID: 4672A3AB.1040007@soft-com.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Oswaldo Hernández escribió:
> Arturo Munive escribió:
>>
>> prueba=# select * from codigos;
>> codigo | orden
>> --------+-------
>> 547 |
>> 459 |
>> 248 |
>> 925 |
>> 247 |
>> 425 |
>> (6 rows)
>>
>>
>> pero quisiera que tenga algo asi
>>
>> codigo | orden
>> --------+-------
>> 247 | 1
>> 248 | 2
>> 425 | 3
>> 459 | 4
>> 547 | 5
>> 925 | 6
>> (6 rows)
>>
>> es decir como ordenar la tabla antes de la actualización?, por que
>> cuando en estos datos uso lo que me recomendaste entonces
>> coloca la secuencia pero no en los códigos ordenados, es decir la
>> secuencia de los números debe quedar acorde al código ordenado
>> ascendentemente.
>
> Hace algun tiempo tuve una necesidad parecida y lo resolvi mas o menos
> asi (Ojo no esta probado):
>
> update codigos set ordern = (select count(*) from codigos as c2 where
> codigos.codigo < c2.codigo) + 1;

ERRATA: Cambia el '<' por '>'
( es lo que pasa cuando se hacen las cosas deprisa y no se prueban)

>
> La idea es que para cada valor de codigo cuente cuantos hay menores y le
> asigne este valor + 1 (En caso de que el orden empieze por 1).
> Con tablas no muy grandes funcionará bien, si son muy grandes puede
> tardar un poco ;)
>
> Suerte.
>

--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Arturo Munive 2007-06-15 14:37:34 Re: asignar valor creciente
Previous Message Arturo Munive 2007-06-15 14:34:18 Re: asignar valor creciente