Inicio > Programación > victoramf > Crear Consulta en VFP

Crear Consulta en VFP

Experto:
Usuario:
Fecha: 13/06/2008
Valoración: (5,00 sobre 5) Categoría: Programación
04/06/2008
girlinfo, usuario preguntando en Programación
Usuario
Hola buen día experto.
En esta oportunidad te agradeceré me ayudes a crear una consulta en VFP, pero que en lugar que me muestre entre dos tablas, los registros en común, me muestre los registros que no coinciden en ambas tablas, no estoy segura si tenga que ver con usar INNER JOIN o si existirá alguna cláusula especial para mostrar, lo registros que no coninciden en ambas tablas.
En espera de tu respuesta.
Muchísimas gracias por tu tiempo.
 
 
04/06/2008
girlinfo, experto respondiendo en Programación
Experto
Puedes crear una rutina para hacerlo en forma "manual", suponiendo que ambas tablas tiene la misma estructura:
Select tabla1
Go Top
Do While !Eof()
     Select tabla2
     Seek tabla1.campoID
     If Eof()
          Select resultado
          Append Blank
          Replace resultado.campoID With tabla1.campoID, ;
               resultado.campo1 With tabla1.campo1
               resultado.campo2 With tabla1.campo2
               resultado.campo3 With tabla1.campo3
     EndIf
     Select tabla1
     Skip
EndDo
Select tabla2
Go Top
Do While !Eof()
     Select tabla1
     Seek tabla2.campoID
     If Eof()
         Select resultado
         Append Blank
         Replace resultado.campoID With tabla2.campoID, ;
              resultado.campo1 With tabla2.campo1
              resultado.campo2 With tabla2.campo2
              resultado.campo3 With tabla2.campo3
     EndIf
     Select tabla2
     Skip
EndDo
05/06/2008
girlinfo, usuario preguntando en Programación
Usuario
Muchas gracias por la pronta respuesta experto.
Pero fijate que yo he hecho una pequeña consulta con dos tablas, la cual te muestro a continuación:
SELECT Facturacion_mayo.factura_det as factura_det, Factu_enca_mayo.factura_enca as factura_enca,;
Facturacion_mayo.total_det as total_det, Factu_enca_mayo.total_enca as total_enca,;
Facturacion_mayo.suc_det as suc_det, Factu_enca_mayo.suc_enca as suc_enca;
FROM Factu_enca_mayo inner JOIN Facturacion_mayo;
ON Factu_enca_mayo.factura_enca = facturacion_mayo.factura_det;
ORDER BY Facturacion_mayo.suc_det, Factu_enca_mayo.suc_enca;
WHERE Factu_enca_mayo.factura_enca = Facturacion_mayo.factura_det;
AND Factu_enca_mayo.suc_enca = Facturacion_mayo.suc_det;
INTO table c:\Factu_mayo
 Con esto lo que hago es ver los registros que tienen en común ambas tablas, ahora mi pregunta es, qué debería modificar en la consulta que te indico, como para que se muestren los registros que no coinciden entre las tablas.
Gracias por tu tiempo.
 
 
05/06/2008
girlinfo, experto respondiendo en Programación
Experto
¿Las tablas son nativas de VFP?
05/06/2008
girlinfo, usuario preguntando en Programación
Usuario
Si experto, son de VFP *.dbf.
Saludos.
05/06/2008
girlinfo, experto respondiendo en Programación
Experto
Si las tablas son nativas ¿Porque usar instrucciones Select-SQL? aunque desde mi punto de vista no es lo mejor:
SELECT Facturacion_mayo.factura_det as factura_det, ;
Factu_enca_mayo.factura_enca as factura_enca, ;
Facturacion_mayo.total_det as total_det, ;
Factu_enca_mayo.total_enca as total_enca, ;
Facturacion_mayo.suc_det as suc_det, ;
Factu_enca_mayo.suc_enca as suc_enca ;
FROM Factu_enca_mayo,Facturacion_mayo ;
Where Facturacion_mayo.factura_det Not In (SELECT Facturacion_mayo.factura_det as factura_det, Factu_enca_mayo.factura_enca as factura_enca,;
Facturacion_mayo.total_det as total_det, Factu_enca_mayo.total_enca as total_enca,;
Facturacion_mayo.suc_det as suc_det, Factu_enca_mayo.suc_enca as suc_enca;
FROM Factu_enca_mayo inner JOIN Facturacion_mayo;
ON Factu_enca_mayo.factura_enca = facturacion_mayo.factura_det;
ORDER BY Facturacion_mayo.suc_det, Factu_enca_mayo.suc_enca;
WHERE Factu_enca_mayo.factura_enca = Facturacion_mayo.factura_det;
AND Factu_enca_mayo.suc_enca = Facturacion_mayo.suc_det) And ;
Factu_enca_mayo.factura_enca Not In (SELECT Facturacion_mayo.factura_det as factura_det, Factu_enca_mayo.factura_enca as factura_enca,;
Facturacion_mayo.total_det as total_det, Factu_enca_mayo.total_enca as total_enca,;
Facturacion_mayo.suc_det as suc_det, Factu_enca_mayo.suc_enca as suc_enca;
FROM Factu_enca_mayo inner JOIN Facturacion_mayo;
ON Factu_enca_mayo.factura_enca = facturacion_mayo.factura_det;
ORDER BY Facturacion_mayo.suc_det, Factu_enca_mayo.suc_enca;
WHERE Factu_enca_mayo.factura_enca = Facturacion_mayo.factura_det;
AND Factu_enca_mayo.suc_enca = Facturacion_mayo.suc_det) ;
INTO table c:\Factu_mayo
13/06/2008
girlinfo, usuario preguntando en Programación
Usuario
Muchas gracias experto, me ha servido de mucho.
Enlaces patrocinados