Oswaldo Hernández escribió:
> 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.
>>
>
>
funcionó, bueno eso de que en tablas grandes demore, es un costo que
deberé pagar mientras vemos como se puede optimizar, la solución gracias