Re: asignar valor creciente

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To: Arturo Munive <arturomunive(at)gmail(dot)com>
Cc: 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:25:27
Message-ID: 4672A157.9070004@soft-com.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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;

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 Patricio Cifuentes Ithal 2007-06-15 14:30:16 RE: Postgres and Mapserver timeout
Previous Message Arturo Munive 2007-06-15 13:41:36 Re: asignar valor creciente