Re: Uso de arrays en comparaciones

From: Carlos Bazán <infobaz(at)vtr(dot)net>
To: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
Cc: pgsql-es-ayuda(at)postgresql(dot)org, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Subject: Re: Uso de arrays en comparaciones
Date: 2010-02-10 20:14:26
Message-ID: 201002101714.27596.infobaz@vtr.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

En realidad se cambió el criterio de un principio hasta ahora. Inicialmente,
la idea era saber si existían todos los datos del arreglo en la tabla en
cuestión y generar un error que abarcara el contexto de que había un error
general en la operación si alguno de los ruts (se trabajará con el RUT) no
existía en la tabla. Así estaba el diseño original (que no lo hice yo), pero
ahora la idea es saber cuál es el dato que no existe en la tabla para
segmentar el retorno del error.
Se creará una tabla temporal con los rut que llegan de un formulario web
llamada por ej.: tabla_aux

Por lo tanto se usaría SELECT rut FROM tabla_aux WHERE rut NOT IN (SELECT rut
FROM tabla_origen WHERE condicion IS TRUE)

Eso me esta funcionando sin problemas ahora.

Saludos

El Wednesday 10 February 2010 14:43:55 Jaime Casanova escribió:
> 2010/2/9 Carlos Bazán <infobaz(at)vtr(dot)net>:
> >> Yo creo que necesitas ANY en vez de ALL.
> >
> > Ok, igual sirve. Para verificar que esten todos entonces voy a modificar
> > el query para que me retorne la cantidad de registros que figuran en el
> > arreglo, para despues comparar el valor con el valor correspondiente al
> > tamaño del arreglo.
>
> no entendi ese cambio que vas a hacer pero me parece que tu consulta
> esta mal planteada...
>
> segun entendi aqui:
> http://archives.postgresql.org/pgsql-es-ayuda/2010-02/msg00160.php lo
> que quieres lograr es saber si todos los datos del arreglo estan en la
> tabla...
>
> pero una consulta que retorne datos de la tabla no te va a mostrar los
> que "no" estan en la tabla, por ejemplo:
> """
> select * from mi_tabla where numero = all ('{100, 200, 300, 400}')
> """
>
> te puede decir que "si" hay en la tabla de ese arreglo, pero no te
> puede decir que "no" hay...
> mas bien se me ocurre que lo que necesitas hacer es tratar ese arreglo
> como si fuera una tabla... en la version 8.4 existe la funcion
> unnest() que serviria para eso, en 8.3 solo se me ocurre meter todo en
> una tabla y luego sacar datos de esa nueva tabla where not exists
> (select 1 from tabla_original where numero = tabla_arreglo.numero)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Luis Esteban 2010-02-10 21:01:57 Dudas con trigger...
Previous Message Juan José (Pepe) 2010-02-10 19:51:10 Sobre DBF