[Pgsql-ayuda] Full outer join
jtaaribi
jtaaribi@terra.es
Tue, 23 Dec 2003 17:08:24 +0100
Creo que ha habido un mal entendido ;-)
Cuando Martín me ha dicho que usase OR en vez de AND, yo entendía que me
decía que utilizase la consulta:
select t.num, t.col1, t.col3
from (select t1.num,t1.col1, t2.col3 from
t1 full outer join t2 on
t1.num = t2.num) t
where
t.col2 = 1 OR
t.col4 = 5
Con la que el problema es que se pueden obtener más valores de los
deseados.
Aunque parece que quería decirme, tal y como me aclara Alvaro:
select t.num, t.col1, t.col3
from (select t1.num,t1.col1, t2.col3 from
t1 full outer join t2 on
t1.num = t2.num) t
where
(t.col2 = 1 OR t.col2 is null) and
(t.col4 = 5 OR t.col4 is null)
Haciendo pruebas con explain analyze, la consulta más eficiente con
diferencia es la que destaca como razonable Alvaro:
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
Siento que la consulta al final no haya sido concretamente de PostgreSql,
por lo que la próxima vez intentaré adquirir el libro que me aconseja Martín
antes de acudir a la lista ;-)
Muchas gracias por todo. Felices fiestas y próspero año nuevo
Iñaki
-----Mensaje original-----
De: pgsql-ayuda-admin@tlali.iztacala.unam.mx
[mailto:pgsql-ayuda-admin@tlali.iztacala.unam.mx]En nombre de Alvaro
Herrera
Enviado el: martes, 23 de diciembre de 2003 14:00
Para: jtaaribi
CC: Martin Marques; pgsql-ayuda@tlali.iztacala.unam.mx
Asunto: Re: [Pgsql-ayuda] Full outer join
On Tue, Dec 23, 2003 at 09:55:22AM +0100, jtaaribi wrote:
> 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.
No entiendo por que no sirve WHERE a=2 OR a IS 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
Parece razonable ...
--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"La felicidad no es mañana. La felicidad es ahora"
_______________________________________________
Pgsql-ayuda mailing list
Pgsql-ayuda@tlali.iztacala.unam.mx
http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda