Visual Foxpro 9 sp2 y Consulta Tablas MySql

1,347 views
Skip to first unread message

Roberto

unread,
Mar 2, 2013, 7:25:30 PM3/2/13
to Mundo Visual FoxPro
Estimado Foro

Una consulta, tengo 3(tres) tablas dbf

use afic order tag numliq

use afip order tag numliq

use tabla3
set rela to numliq into afic
set rela to numliq into afip addi

Realizo una consulta con el browse siguiente

browse fields tabla3.cpo1, a=funt1(), b=funt2() ** Las funciones
Calculan
Hasta alli todo OK.

Mi problema es que las bases ahora son MySql me conecto en forma
remota al servidor pero no logro obtener los resultados con la
consulta SQL siguiente:

la Conexion a la DB se realiza correctamente

SELECT ospreliq.numliq, SUM(afip.totallf) as total1,SUM(afic.monto)
as total2 FROM ospreliq, afip, afic ;
where ospreliq.numliq=afip.numliq and ospreliq.numliq=afic.numliq ;
GROUP BY ospreliq.numliq ;
INTO CURSOR liqui

Funciona pero no obtengo toda la informacion se pierde las lineas en
las que no hay datos en afic o afip

Son mis primeras experiencias en sentencias SQL sepan disculpar.
Si alguien me orienta lo agradeceria
Muchas Gracias

Aaron varon

unread,
Mar 2, 2013, 7:48:49 PM3/2/13
to mundovis...@googlegroups.com

Estimado probasts tu transact Sql en mySql?.. parece q hay error en la sentencia sql.

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.

Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.


Miguel Antúnez

unread,
Mar 2, 2013, 9:32:05 PM3/2/13
to mundovis...@googlegroups.com
usa las sentencias JOIN.

SELECT ospreliq.numliq,  SUM(afip.totallf) as total1,SUM(afic.monto)
as total2   FROM ospreliq ;
        left outer join  afip on ospreliq.numliq=afip.numliq left outrer join afic on  ospreliq.numliq=afic.numliq ;

        GROUP BY ospreliq.numliq ;
        INTO CURSOR liqui

Saludos
--
Miguel Angel Antúnez Camones
mant...@gmail.com

Roberto

unread,
Mar 2, 2013, 10:52:38 PM3/2/13
to Mundo Visual FoxPro
Muchas Gracias Miguel
Es la solucion a mi problema
Desde ya muy agradecido.
Roberto

Alex Field

unread,
Mar 3, 2013, 3:59:38 PM3/3/13
to mundovis...@googlegroups.com
SELECT ospreliq.numliq,  SUM( NVL(afip.totallf,0) ) as total1, SUM( NVL(afic.monto,0) ) as total2   
  FROM ospreliq LEFT JOIN afip ON ospreliq.numliq=afip.numliq; 
                         LEFT JOIN afic ON ospreliq.numliq=afic.numliq;         

Analyzer

unread,
Mar 4, 2013, 1:25:02 PM3/4/13
to mundovis...@googlegroups.com
Roberto,

No te ofendas, pero no puede ser que estés usando mysql y usando selects sueltos y into cursor.

Digo que no puede ser porque el formato sería el de la función SQLEXEC() y ahi no se usa INTO CURSOR.

Si estás usando la técnica de SPT(Sql Pass Through), este artículo despejará tus dudas:

Roberto

unread,
Mar 4, 2013, 2:22:53 PM3/4/13
to mundovis...@googlegroups.com
Estimado  Analyzer

Muchas Gracias por responder y por tu aporte es de mucha utilidad

Roberto

Analyzer

unread,
Mar 4, 2013, 2:30:59 PM3/4/13
to mundovis...@googlegroups.com
Roberto,

Con gusto. Los créditos del artículo van para su autor y para los propietarios de portalfox que tienen posteada la información en su sitio.

Cualquier duda si está dentro de nuestro conocimiento, estaremos para apoyarte.

Saludos!


Roberto

unread,
Mar 4, 2013, 2:47:00 PM3/4/13
to mundovis...@googlegroups.com
Gracias Alex Field
Probado y funciona, se agradecen los aportes
Roberto



Roberto

unread,
Mar 5, 2013, 10:29:15 PM3/5/13
to mundovis...@googlegroups.com

eduardo

unread,
Mar 9, 2013, 8:16:45 AM3/9/13
to mundovis...@googlegroups.com
Creo que deberias utilizar la opcion inner join
El problema (sucede igual en VFP), es que cuando se hace la consulta, no trae los registros que no verifican por algun motivo las clausulas where;´por ejemplo en la consulta que realizás, no te traerá los registros de ospreliq cuyo numliq no se tengan el mismo numliq en la tabla afip o afic.
Un ejemplo mas simple similar al tuyo
SELECT ospreliq.numliq, SUM(afip.totallf) as total1   FROM ospreliq, afip;
where ospreliq.numliq=afip.numliq  GROUP BY ospreliq.numliq ;
INTO CURSOR liqui
Si existiera un registro de ospreliq cuyo campo numliq no se encontrara en afip, no lo va a traer.
Deberías probar la sentencia:
SELECT ospreliq.numliq, SUM(afip.totallf) as total1 FROM ospreliq ;
inner join afip on ospreliq.numliq=afip.numliq GROUP BY ospreliq.numliq ;
INTO CURSOR liqui
Con esta sentencia traerás todos los registros de la tabla afip, incluidos los no se encuentren relacionados con la tabla ospreliq mediante el campo numliq.; el campo total1 para esos casos, será .NULL.
Deberías luego de la consulta (para evitar errores posteriores) transformar los campos .null. en 0, algo asi como
replace all liqui.total1 with 0 for isnull(liqui.total1)
Espero que esto resuelva tu problema al menos te oriente un poco.
Saludos
Eduardo
 
 
Reply all
Reply to author
Forward
0 new messages