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-01 13:50:13
Message-ID: 1088689813.1343.19.camel@6-allhosts
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola, muchas gracias, si funciona!!!.

Efectivamente, me devuelve las tuplas consecutivas que no tengan el
mismo locationsource.

Pero!!!, no son del todo consecutivos los registros!, al insertarse el
valor de recnum se incrementa solo, como ya lo había dicho.

El problema es, que son varias personas las que captura estos datos y no
es la misma área (otro registro llamado gridnum), por lo que los
registros para un determinada área quedan con huecos en la numeración,
es decir si un recnum tiene 23 el siguiente de la misma área, puede no
tener 24, si no algo como 35 (dependiendo cuanto se tardo en capturar el
sig registro).

Por ejemplo.

SELECT recnum, upnodeid, downnodeid, locationsource, gridnum from
sewerarcspass1 where gridnum='010265' order by recnum;

recnum | upnodeid | downnodeid | locationsource | gridnum
--------+----------------+------------------+----------------+---------
825 | 9 | 10 | 9487 | 010265
826 | 10 | 11 | 9487 | 010265
827 | 11 | 12 | 9487 | 010265
837 | 21 | 23 | 3672 | 010265
839 | 23 | 24 | 3672 | 010265
849 | 31 | 32 | 9093 | 010265
850 | 32 | 33 | 9093 | 010265
851 | 33 | 34 | 9093 | 010265
852 | 34 | 35 | 9093 | 010265
853 | 35 | 36 | 9093 | 010265
854 | 36 | 37 | 9093 | 010265
859 | 43 | 44 | 17050 | 010265
867 | 48 | 49 | 11484 | 010265

como puedes ver los últimos números se salta de 854 a 859 y aquí hay un
cambio de locationsource. y de ahí el siguiente tiene también diferente
locationsource y su numero es 867.

Se me estaba ocurriendo que en ves de utilizar este recnum utilizar
algún campo calculado donde al ordenarlo por recnum empiece desde 1
hasta n tuplas, pero no encuentro tampoco como hacer esto

seria algo como esto

SELECT CAMPOCALCULADO, recnum, upstreamnodeid, downstreamnodeid,
locationsource, gridnum from sewerarcspass1 where gridnum='010265' order
by recnum;

donde CAMPOCALCULADO, empezaría desde 1 hasta el total de registros
incrementando en 1 en cada registro (1,2,3,...,n)

Teniendo esto, para la consulta que me pasastes, podría utilizar este
CAMPOCALCULADO, en ves de recnum y así no omitiría algún registro.

pero no encuentro como hacer esto? alguien tiene un idea y seria tan
amable de mostrarme como?

Muchas gracias nuevamente!!!

On Wed, 2004-06-30 at 16:26, Guillermo Schulman wrote:
> (este mail no es un reply directo del mail que
> responde porque estoy teniendo algunos problemas con
> mi cliente de mail)
>
> Si no entiendo mal, la idea es encontrar aquellos
> registros consecutivos que no tengan el mismo
> locationsource.
> Supongo que este query te solucionaría el problema:
>
> 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;
>
> La segunda parte podés solucionarla usando el mismo
> concepto.
> Si necesitas ayuda avisame.
>
>
> Benjamin Roberto Alvarado Rivera wrote:
>
> Buenas tardes,
>
> Tengo una duda, pero es un off-topic, aun que se trata
> de una consulta.
> en fin, lo siento.
>
> Tengo unas tablas como estas
>
> tabla de nodos
> tblnodos (recnum numeric, NodeId numeric, ... )
>
> tabla de lineas
> tbllines ( recnum numeric, upNodeID numeric,
> downNodeID, ... ,
> LocationSource numeric, ... )
>
> donde:
> upNodeID y downNodeID de tbllines, que forman los
> nodos de una tubería
> de drenaje, estarían relacionados con nodeID de
> tblnodos.
> LocationSource es el numero de plano y
> recnum es un numero auto-incrementado por una
> secuencia, generado en
> cada ingreso del registro.
>
> Es posible por medio de SQL hacer una consulta a la
> tabla tbllines, que
> tendría datos como estos:
>
> recnum up down locationsource
> 1 1 2 1000
> 2 2 3 1000
> . . . .
> . . . .
> . . . .
> 50 38 40 1000
> 51 40 41 2000
> 52 42 43 2000
> . . . .
> . . . .
> . . . .
> 79 124 125 2000
> 80 125 126 5500
> . . . .
> . . . .
> . . . .
> 110 267 268 5500
> 111 269 270 6700
> . . . .
> . . . .
> . . . .
>
> y ordenarlos por recnum y obtener solo las tuplas
> donde hay cambios de
> locationsource, es decir que de la tabla anterior solo
> me de
>
> recnum up down locationsource
> 50 38 40 1000
> 51 40 41 2000
> 79 124 125 2000
> 80 125 126 5500
> 110 267 268 5500
> 111 269 270 6700
>
> que son las tuplas donde hubo cambio de
> locationsource.
>
> y otra duda, que se basa en el mismo problema, seria
> solo seleccionar
> aquellas tuplas que tiene cambios de locationsource y
> el nodo
> downNodeId es igual a UpNodeID de la siguiente tupla.
> con lo que solo
> tendria como resultado
>
> recnum up down locationsource
> 50 38 40 1000
> 51 40 41 2000
> 79 124 125 2000
> 80 125 126 5500
>
> las ultimas dos tuplas,con recnum 110 y 111, no las
> seleccionaría por
> que no tiene nodeID en común.
>
> Es posible hacer esto por medio de SQL, por que lo
> estoy haciendo por
> medio de programación, recorriendo el resultado de una
> consulta y donde
> encuentre las diferencias y usa esos datos
>
> Pero, no se si es posible? hacer directamente esto,
> desde SQL, que me
> facilitaría mas algunas cosas.
>
> Muchas gracias por su tensión.
>
> Benjamin Alvarado
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 1: para suscribirte y desuscribirte, escribe a
> majordomo(at)postgresql(dot)org
>
>
>
> ------------
> Internet gratis ¡y que funciona!
> Tres nuevas ciudades con números locales:
> Escobar, Zárate y Campana
> Yahoo! Conexión
> http://ar.online.yahoo.com
> ¿Qué esperas para navegar bien y a bajo costo?
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: ¿Has leído nuestro extenso FAQ?
>
> http://www.postgresql.org/docs/faqs/FAQ.html

In response to

  • Re: Consulta at 2004-06-30 21:26:08 from Guillermo Schulman

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message rrodriguez+tumisolutions.com 2004-07-01 13:57:43 Re: Select con horas
Previous Message Alvaro Herrera 2004-07-01 13:16:15 Re: Un saludo a toda la gente de la lista y primera duda