RE: [Pgsql-ayuda] Full outer join

From: "jtaaribi" <jtaaribi(at)terra(dot)es>
To: "Martin Marques" <martin(at)bugs(dot)unl(dot)edu(dot)ar>
Cc: <pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx>
Subject: RE: [Pgsql-ayuda] Full outer join
Date: 2003-12-23 08:55:22
Message-ID: KDEJLCEJADFALPGJIEKGKEBKDDAA.jtaaribi@terra.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Muchas gracias Martín por tu respuesta y perdona por haberme equivocado con
tu nombre ;-)

Con los datos del caso del ejemplo que he puesto, sí que valdría con OR.
Pero no en general, ya que quiero que se cumplan _ambas_ condiciones a la
vez pero sin excluir los null.

Se me ha ocurrido una nueva SQL:

select tt1.num, tt2.num, tt1.col1, tt2.col3
from (select t1.num, t1.col1, t1.col2 from
t1 where t1.col2 = 1) tt1
full outer join
(select t2.num, t2.col3, t2.col4 from
t2 where t2.col4 = 5) tt2 on
tt1.num = tt2.num

Que creo que es mejor que mis anteriores alternativas:

select t1.num, t2.num, t1.col1, t2.col3
from t1 full outer join t2 on
t1.num = t2.num
where (t1.col2 = 1 and t2.col4 = 5) or
(t1.col2 = 1 and t2.col4 is null) or
(t1.col2 is null and t2.col4 = 5)

select t1.num, t2.num, t1.col1, t2.col3
from t1 left outer join t2 on
t1.num = t2.num and
t2.col4 = 5
where t1.col2 = 1
union
select t2.num, t1.col1, t2.col3
from t1 right outer join t2 on
t1.num = t2.num and
t1.col2 = 1
where t2.col4 = 5 and
t1.num is null

Probaré de todas formas con explain analyze

Muchas gracias por todo

Saludos

Iñaki

-----Mensaje original-----
De: pgsql-ayuda-admin(at)tlali(dot)iztacala(dot)unam(dot)mx
[mailto:pgsql-ayuda-admin(at)tlali(dot)iztacala(dot)unam(dot)mx]En nombre de Martin
Marques
Enviado el: lunes, 22 de diciembre de 2003 19:05
Para: jtaaribi; pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Asunto: Re: RV: [Pgsql-ayuda] Full outer join

El Lun 22 Dic 2003 12:23, jtaaribi escribió:
>
> Muchas gracias Manuel por responderme.

No soy Manuel, soy Matrín! :-)

> Creo que el subselect no me soluciona el problema. Si he entendido bien,
el
> resultado de la subselect sería:
>
> num | col1 | col2 | col3 | col4
> -----+--------------------------
> 1 | a | 1 | xxx | 5
> 2 | b | 1 | null | null
> 3 | c | 2 | null | null
> 2 | null | null | yyy | 6
> 5 | null | null | zzz | 5
>
> Al limitar en el where de la select con t.col2 = 1 and t.col4 = 5, como
> resultado sólo se obtendría:
>
> num | col1 | col3
> -----+------------
> 1 | a | xxx
>
>
> Pero el resultado que yo deseo es:
>
> num | col1 | col3
> -----+------------
> 1 | a | xxx
> 2 | b | null
> 5 | null | zzz
>
> ¿Es así ¿Alguna alternativa?

No uses AND, usa OR.

--
select 'mmarques' || '@' || 'unl.edu.ar' AS email;
-----------------------------------------------------------------
Martín Marqués | mmarques(at)unl(dot)edu(dot)ar
Programador, Administrador, DBA | Centro de Telemática
Universidad Nacional
del Litoral
-----------------------------------------------------------------

_______________________________________________
Pgsql-ayuda mailing list
Pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message vbenitez 2003-12-23 12:49:09 [Pgsql-ayuda] N Procesadores (Es la solucion)
Previous Message Alvaro Herrera 2003-12-23 04:01:56 Re: [Pgsql-ayuda] Compilación de Postgres 7.4