From: | "jtaaribi" <jtaaribi(at)terra(dot)es> |
---|---|
To: | "Alvaro Herrera" <alvherre(at)dcc(dot)uchile(dot)cl>, "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 16:08:24 |
Message-ID: | KDEJLCEJADFALPGJIEKGCEBNDDAA.jtaaribi@terra.es |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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(at)tlali(dot)iztacala(dot)unam(dot)mx
[mailto:pgsql-ayuda-admin(at)tlali(dot)iztacala(dot)unam(dot)mx]En nombre de Alvaro
Herrera
Enviado el: martes, 23 de diciembre de 2003 14:00
Para: jtaaribi
CC: Martin Marques; pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)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(at)tlali(dot)iztacala(dot)unam(dot)mx
http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Gorka | 2003-12-23 16:32:07 | [Pgsql-ayuda] Arrancar PostgreSQL 7.0 |
Previous Message | Fernando Romo | 2003-12-23 15:26:48 | Re: [Pgsql-ayuda] N Procesadores (Es la solucion) |