Error en consulta sql foxpro

Hola tengo dos tablas una de entradas (prod_ped) y una de salidas (salidas), la primera registra las entradas que llegan a un almacen y las salidas, lo que sacan del almacen, quiero sacar las existencias uniendo las dos tablas, este es el codigo de la consulta, pero me pone el mismo resultado de entradas y salidas y existencia para todos los articulos, que estoy hacinedo mal?
SELECT prod_ped.codigo,salidas.codigo, salidas.descrip,(SELECT SUM(prod_ped.cantidad) as ventradas FROM PROD_PED),(select SUM(SALIDAS.CANTIDAD) AS VSALIDAS FROM SALIDAS),((SELECT SUM(prod_ped.cantidad) as ventradas FROM PROD_PED)-(select SUM(SALIDAS.CANTIDAD) AS vexiste FROM SALIDAS));
FROM prod_ped FULL JOIN salidas ON prod_ped.codigo = salidas.codigo;
GROUP BY prod_ped.codigo;
el resultado que me arroja es el siguiente:
Codigo_A Codigo_B Ventradas Vsalidas Descripcion Exp_6(existencia)
0001 0001 205 73 Articulo 132
0002 0001 205 73 Articulo 132
0003 0001 205 73 Articulo 132
Me repite el primer resultado en todos los registros.

1 Respuesta

Respuesta
-1
Mm pues me parece que el problema pudiera estar en el "FULL JOIN". Creo que en este caso no es necesario hacer ese tipo de unión, puedes utilizar un "INNER JOIN" en su lugar. Tal vez eso ayude con el problema.
También creo que el "GROUP BY" es algo incoherente, supongo que estás usando una versión anterior a la 9 de Visual FoxPro, ya que si fuera la 9, esa consulta te mandaría un error en el "GROUP BY". Igual mira éste enlace, ahí se explica un poco sobre esto para que entiendas mejor.
http://www.todoexpertos.com/mitodoexpertos/expert/questions/view/2770735/group-by-error-en-vfp-9-0
De cualquier forma, según lo que entiendo de la consulta, creo que podrías modificarla para que quede algo así:
SELECT ;
e.Codigo, ;
s.Codigo, ;
s.Descrip, ;
SUM(e.Cantidad) as ventradas, ;
SUM(s.Cantidad) AS VSALIDAS, ;
SUM(e.Cantidad) - SUM(s.Cantidad) AS Existencia ;
FROM ;
prod_ped e ;
INNER JOIN salidas e ON s.Codigo = e.Codigo ;
GROUP BY e.Codigo, s.Codigo, s.Descrip
Fíjate cómo cambio el "GROUP BY". No estoy seguro que esto sea lo que realmente quieras, pero es como lo entendi.
Gracias, ikz0f7,
si uso el VFP 9. Solo que tengo la Senticea SET ENGINEBEHAVIOR 70, para hacerlo compatible....
nO uso el INNER, porque solo me traeria los registros que coincida el codigo, pero puede ser que tenga ENTRADAS de un articulo y NINGUNA SALIDA, asi que ese articulo no me aparecera en la tabla salidas y por lo tanto no me lo incluira,
Oh sí, creo que ya entiendo, tienes razón, el INNER JOIN no funcionaría en este caso. Si lo que quieres es obtener un listado de todos los productos, ya sea de la tabla de salidas o la de entradas, con su respectiva existencia, entonces creo que puedes hacer algo así:
<pre>SELECT ;
e.Codigo, ;
s.Codigo, ;
s.Descrip, ;
SUM(e.Cantidad) AS Entradas, ;
SUM(s.Cantidad) AS Salidas, ;
SUM(IIF(ISNULL(e.Cantidad), 0, e.Cantidad) - IIF(ISNULL(s.Cantidad), 0, s.Cantidad)) ;
AS Existencia ;
FROM ;
prod_ped e ;
FULL JOIN salidas e ON s.Codigo == e.Codigo ;
GROUP BY e.Codigo, s.Codigo, s.Descrip
</pre>
Yo hice una sencilla prueba y la consulta me arrojó los resultados esperados, por lo cual pienso que debe funcionar, en caso contrario, anota el resultado para ver que puediera estar pasando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas