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
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 |