Re: Ayuda sobre left outer join

From: Javier Bermúdez Tito <javier_bt(at)hotmail(dot)com>
To: systemguards(at)gmail(dot)com
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda sobre left outer join
Date: 2006-02-08 14:16:49
Message-ID: BAY12-F1155396481EBB301D317785000@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

<html><div style='background-color:'><P>bueno gracias por tu tiempo, te cuento que ejecute el script que me pasastes y si ejecuta normal pero tengo grandes dudas con respecto al resultado que me da esa consulta, ya que cuando ejecuto por separado cada tabla osea primero consulto a mi tabla scoplaen este me retorna 12839 registros y mi tabla scoplani me retorna 12604, ahora bien cuando ejecuto uniendo las dos tablas con el script que me has dado me retorna 12326, ahora no se si es correcto, puesto que si estoy haciendo un left join creo que deberia de mostrar todos los registros de la tabla de la izquierda en este caso scoplaen con sus 12839 registros asi estos no se encuentren en la tabla scoplani verdad???, pero no me da ese resultado me devuelve menos registros solo 12326, haber si me puede ayudar alguien con este temita graciasss.<BR><BR></P><BR><BR><BR>
<DIV>
<P align=right><FONT face="Lucida Handwriting, Cursive" color=#0099cc size=1><STRONG>El amor es el significado último de todo lo que nos rodea. No es un simple sentimiento, es la verdad, es la alegría que está en el origen de toda creación. </STRONG></FONT><FONT face="Lucida Handwriting, Cursive" color=#ff0000 size=1><STRONG><IMG height=2 src="http://graphics.hotmail.com/greypixel.gif" width="100%" vspace=9>.:: J @ v i e r ::.</STRONG></FONT></P></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #a0c6e5 2px solid; MARGIN-RIGHT: 0px"><FONT style="FONT-SIZE: 11px; FONT-FAMILY: tahoma,sans-serif">
<HR color=#a0c6e5 SIZE=1>
From: <I>Jaime Casanova &lt;systemguards(at)gmail(dot)com&gt;</I><BR>To: <I>Javier Bermúdez Tito &lt;javier_bt(at)hotmail(dot)com&gt;</I><BR>CC: <I>pgsql-es-ayuda(at)postgresql(dot)org</I><BR>Subject: <I>Re: [pgsql-es-ayuda] Ayuda sobre left outer join</I><BR>Date: <I>Tue, 7 Feb 2006 23:40:03 -0500</I><BR>&gt;On 2/7/06, Javier Bermúdez Tito &lt;javier_bt(at)hotmail(dot)com&gt; wrote:<BR>&gt; &gt;<BR>&gt; &gt; Holaaaa gentita ayuda si alguien me puede decir en que estoy fallando no me<BR>&gt; &gt; funciona bien el left outer join<BR>&gt; &gt; select plen.idccodso,<BR>&gt; &gt; (coalesce(plen.sccoapor,0) + coalesce(plen.sccopram,0) +<BR>&gt; &gt; coalesce(plen.sccoprin,0) + coalesce(plen.sccocred,0) +<BR>&gt; &gt; coalesce(plen.sccomocr,0) +<BR>&gt; &gt; coalesce(plen.sccoprmo,0) + coalesce(plen.sccofose,0) +<BR>&gt; &gt; coalesce(plen.sccoacti,0) + coalesce(plen.sccomult,0) +<BR>&gt; &gt; coalesce(plen.sccomant,0))
AS total_enviado,<BR>&gt; &gt; (coalesce(plef.sccoapor,0) + coalesce(plef.sccopram,0) +<BR>&gt; &gt; coalesce(plef.sccoprin,0) + coalesce(plef.sccocred,0) +<BR>&gt; &gt; coalesce(plef.sccomocr,0) + coalesce(plef.sccoprmo,0) +<BR>&gt; &gt; coalesce(plef.sccofose,0) + coalesce(plef.sccoacti,0) +<BR>&gt; &gt; coalesce(plef.sccomult,0) + coalesce(plef.sccomant,0)) AS total_efectuado<BR>&gt; &gt; from scoplaen plen left outer join scoplani plef using(idccodso)<BR>&gt; &gt; where plen.sccdfech BETWEEN '01/01/2006' and '31/01/2006' and<BR>&gt; &gt; plef.sccdfech BETWEEN '01/01/2006' and '31/01/2006'<BR>&gt; &gt;<BR>&gt; &gt; necesito que me muestre todos los registros de mi tabla scoplaen asi como<BR>&gt; &gt; tambien los registros que se encuentran en la tabla scoplani pero solo los<BR>&gt; &gt; que esten en la tabla scoplaen<BR>&gt; &gt; algo asi<BR>&gt; &gt; scoplaen<BR>&gt; &gt; 1 10.20
10/01/2006<BR>&gt; &gt; 2 25.30 25/01/2006<BR>&gt; &gt; 3 35.54 30/01/2006<BR>&gt; &gt; 4 45.60 05/02/2006<BR>&gt; &gt; scoplani<BR>&gt; &gt; 2 20.30 26/01/2006<BR>&gt; &gt; 4 25.54 06/02/2006<BR>&gt; &gt;<BR>&gt; &gt; deberia mostrarme los siguiente :<BR>&gt; &gt;<BR>&gt; &gt; scoplaen scoplani<BR>&gt; &gt; 1 10.20 NULL<BR>&gt; &gt; 2 25.30 20.30<BR>&gt; &gt; 3 35.54 NULL<BR>&gt; &gt;<BR>&gt; &gt; espero haberme explicado bien, necesito saber cual es el problema, lo que<BR>&gt; &gt; estube probando tambien era quitando todo el where y pues me hizo bien la<BR>&gt; &gt; consulta, pero necesito hacer que sea solo de un determinado periodo y<BR>&gt; &gt; cuando aplico el filtro pues me sale resultados inesperados, y<BR>&gt; &gt; necesariamente los registros que me devuelva de ambas tablas tienen que ser<BR>&gt; &gt; del mismo periodo bueno espero la respuesta de alguien gracias.<BR>&gt;
&gt;<BR>&gt;<BR>&gt;select plen.idccodso, (coalesce(plen.sccoapor,0) + coalesce(plen.sccopram,0) +<BR>&gt; coalesce(plen.sccoprin,0) +<BR>&gt;coalesce(plen.sccocred,0) +<BR>&gt; coalesce(plen.sccomocr,0) +<BR>&gt;coalesce(plen.sccoprmo,0) +<BR>&gt; coalesce(plen.sccofose,0) +<BR>&gt;coalesce(plen.sccoacti,0) +<BR>&gt; coalesce(plen.sccomult,0) +<BR>&gt;coalesce(plen.sccomant,0))<BR>&gt; AS total_enviado,<BR>&gt; (coalesce(plef.sccoapor,0) +<BR>&gt;coalesce(plef.sccopram,0) +<BR>&gt; coalesce(plef.sccoprin,0) +<BR>&gt;coalesce(plef.sccocred,0) +<BR>&gt; coalesce(plef.sccomocr,0) +<BR>&gt;coalesce(plef.sccoprmo,0) +<BR>&gt; coalesce(plef.sccofose,0) +<BR>&gt;coalesce(plef.sccoacti,0) +<BR>&gt; coalesce(plef.sccomult,0) +<BR>&gt;coalesce(plef.sccomant,0))<BR>&gt; AS total_efectuado<BR>&gt; from scoplaen plen left outer join scoplani plef<BR>&gt; on (plef.idccodso = plen.idccodso and<BR>&gt;
plef.sccdfech BETWEEN '01/01/2006' and '31/01/2006')<BR>&gt; where plen.sccdfech BETWEEN '01/01/2006' and '31/01/2006';<BR>&gt;<BR>&gt;o puedes hacer:<BR>&gt;<BR>&gt;select plen.idccodso, (coalesce(plen.sccoapor,0) + coalesce(plen.sccopram,0) +<BR>&gt; coalesce(plen.sccoprin,0) +<BR>&gt;coalesce(plen.sccocred,0) +<BR>&gt; coalesce(plen.sccomocr,0) +<BR>&gt;coalesce(plen.sccoprmo,0) +<BR>&gt; coalesce(plen.sccofose,0) +<BR>&gt;coalesce(plen.sccoacti,0) +<BR>&gt; coalesce(plen.sccomult,0) +<BR>&gt;coalesce(plen.sccomant,0))<BR>&gt; AS total_enviado,<BR>&gt; (coalesce(plef.sccoapor,0) +<BR>&gt;coalesce(plef.sccopram,0) +<BR>&gt; coalesce(plef.sccoprin,0) +<BR>&gt;coalesce(plef.sccocred,0) +<BR>&gt; coalesce(plef.sccomocr,0) +<BR>&gt;coalesce(plef.sccoprmo,0) +<BR>&gt; coalesce(plef.sccofose,0) +<BR>&gt;coalesce(plef.sccoacti,0) +<BR>&gt; coalesce(plef.sccomult,0)
+<BR>&gt;coalesce(plef.sccomant,0))<BR>&gt; AS total_efectuado<BR>&gt; from scoplaen plen left outer join (select * from scoplani<BR>&gt; where sccdfech<BR>&gt;BETWEEN '01/01/2006' and '31/01/2006')<BR>&gt; as plef using (idccodso)<BR>&gt; where plen.sccdfech BETWEEN '01/01/2006' and '31/01/2006';<BR>&gt;<BR>&gt;--<BR>&gt;Atentamente,<BR>&gt;Jaime Casanova<BR>&gt;(DBA: DataBase Aniquilator ;)<BR>&gt;<BR>&gt;---------------------------(fin del mensaje)---------------------------<BR>&gt;TIP 5: ¿Has leído nuestro extenso FAQ?<BR>&gt;<BR>&gt; http://www.postgresql.org/files/documentation/faqs/FAQ.html<BR></FONT></BLOCKQUOTE></div></html>

Attachment Content-Type Size
unknown_filename text/html 6.5 KB

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2006-02-08 14:23:24 Re: Ayuda sobre left outer join
Previous Message Damian Culotta 2006-02-08 14:14:01 Re: Obtener N de secuencia