Re: Determinar la linea que falta

From: "manuel lamas" <manuel3w(at)hotmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Determinar la linea que falta
Date: 2006-05-09 14:51:16
Message-ID: BAY103-F1100CCD863E1AB3A5A794295A90@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


>
>On Mon, 08 May 2006 17:30:58 -0400, manuel lamas <manuel3w(at)hotmail(dot)com>
>wrote:
>
>>Hola lista,
>>
>>Digamos que tengo una tabla así:
>>
>>CREATE TABLE T1 (c1 int NOT NULL);
>>
>>INSERT INTO T1(c1)VALUES(1);
>>INSERT INTO T1(c1)VALUES(2);
>>INSERT INTO T1(c1)VALUES(4);
>>INSERT INTO T1(c1)VALUES(5);
>>
>>
>>SELECT * FROM T1;
>>c1
>>----
>> 1
>> 2
>> 4
>> 5
>>(4 rows)
>>
>>Me gustaría obtener el numero faltante de c1, o sea el numero 3 para
>>poder hacer un insert.
>>
>>Encontré una manera de hacerlo pero me parece poco elegante. Si alguien
>>tiene una solución me serviría mucho.
>
>si quieres encontrar el primer valor que falta en la secuencia puedes usar
>lo siguiente:
>
>select min(c1+1) as id from t1 where c1+1 not in (select c1 from t1)
>
>en tu caso devolveria 3, si la secuencia esta completa devuelve el proximo
>valor de la secuencia es decir en la tuya 6. Si quieres todos lo valores
>que faltan elimina la funcion min(). debes tener en cuenta ademas que si
>esta vacia la tabla entonces devuelve NULL
>no se si es lo que buscabas pero espero que te sirva de algo.. Cuenca
>>
>>Gracias de antemano
>>Manuel
>>

Gracias Linder y Cuenca por la ayuda.

Cuenca tu le diste bien a lo que yo busco y pregunto un poco mas:

Hay alguna forma elegante de hacer con un solo UPDATE para que la columna C1
se siga sin agujeros.

Por ejemplo:

El original

>>SELECT * FROM T1;
>>c1
>>----
>> 1
>> 2
>> 4
>> 5
>>(4 rows)

Lo que busco

>>SELECT * FROM T1;
>>c1
>>----
>> 1
>> 2
>> 3
>> 4
>>(4 rows)

Muchas gracias por su valioso tiempo.

Manuel

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Webmaster Dbrunas 2006-05-09 18:49:25 Conferencia postgreSQL a cargo de Álvaro Herrera
Previous Message Alvaro Herrera 2006-05-09 14:27:08 Re: UPDATES