[Pgsql-ayuda] Full outer join
jtaaribi
jtaaribi@terra.es
Tue, 23 Dec 2003 09:55:22 +0100
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@tlali.iztacala.unam.mx
[mailto:pgsql-ayuda-admin@tlali.iztacala.unam.mx]En nombre de Martin
Marques
Enviado el: lunes, 22 de diciembre de 2003 19:05
Para: jtaaribi; pgsql-ayuda@tlali.iztacala.unam.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@unl.edu.ar
Programador, Administrador, DBA | Centro de Telemática
Universidad Nacional
del Litoral
-----------------------------------------------------------------
_______________________________________________
Pgsql-ayuda mailing list
Pgsql-ayuda@tlali.iztacala.unam.mx
http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda