Re: Consulta

From: Benjamin Roberto Alvarado Rivera <balvarado(at)linuxmail(dot)org>
To: Guillermo Schulman <gschulman_ml(at)yahoo(dot)com(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Consulta
Date: 2004-07-02 14:05:16
Message-ID: 1088777115.1155.16.camel@6-allhosts
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola nuevamente

Muchas gracias por tu ayuda, aun que el problema continua, no se por que
al crear la tabla temporal en base a la tabla existente, y agregando el
nuevo campo para la numeración consecutiva, no los inserta en el orden
adecuado, por ejemplo

recnum_sucesivo | recnum
-----------------+--------
1 | 395
2 | 373
3 | 374
4 | 20918
5 | 376
6 | 377
7 | 403
8 | 378
9 | 379
10 | 404
11 | 380
12 | 381
13 | 401
14 | 398
15 | 289
16 | 369
17 | 370
18 | 371
19 | 400
20 | 372
21 | 20919

como verán el numero consecutivo 5 y 21, no están ordenados y la
creación de la tabla temporal es

CREATE TEMP SEQUENCE SECUENCIA START WITH 1 INCREMENT BY 1 NO MAXVALUE;

CREATE TEMP TABLE TMP_ARCS1 AS (SELECT *, NEXTVAL('SECUENCIA') AS
RECNUM_SUCESIVO FROM sewerarcspass1 where gridnum='017265' order by
recnum);

aun que le ponga un order by, no los inserta en se orden, lo hace,
supongo, tal y como los va encontrando en la tabla original.

Ya intente, tambien, creando la tabla temporal vacía y con un INSERT
INTO, insertar los datos ordenados, pero tampoco lo hace, los inserta en
el mismo orden, en que va encontrando los datos en la tabla, sin
ordenarlos por el atributo recnum.

Supongo que no habrá de otra que hacer una función de agregación, que
vaya insertando tupla por tupla, en el orden indicado y con ayuda de la
consulta (una preparación previa de los datos, que mas que nada se
basara en ordenar los datos y agregar un nuevo campo con un numero
consecutivo)

select t2.* from tbllines t1, tbllines t2 where
t1.recnum=t2.recnum+1 and t1.locationsource <>
t2.locationsource
UNION
select t2.* from tbllines t1, tbllines t2 where
t1.recnum+1=t2.recnum and t1.locationsource <>
t2.locationsource;

Obtener los, donde hay diferencias en el campo indicado.

Pues muchas gracias, su ayuda a sido muy valiosa.

Nos vemos.

On Thu, 2004-07-01 at 09:14, Guillermo Schulman wrote:
> Creo que una opción podría ser crear una tabla
> temporal/local donde copias todo el contenido de la
> tabla original pero con un campo más "autonumérico",
> es decir, generado por una sequence:
>
> CREATE TEMPORARY SEQUENCE mi_seq ....;
>
> CREATE TEMPORARY TABLE temp_tbllines AS (SELECT *,
> next_val('mi_seq') as recnum_sucesivo FROM tbllines);
>
> Las tablas temporales son locales a la conexión en que
> se encuentran y dejan de existir en el momento en que
> la conexión se cierra.
> Nuevamente, si necesitas ayuda avisame.
>

In response to

  • Re: Consulta at 2004-07-01 14:14:37 from Guillermo Schulman

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alexander Aguilar Torrico 2004-07-02 14:07:37 ayuda SQL con CASE
Previous Message Jose Joaquin Lorente Garcia 2004-07-02 09:49:19 Re: Monitoreo/analisis de logs.