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
*****************************************
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 |