Hola a todos, esta es la primera vez que entro en este foro.
Mi intención es unir tres tablas y obtener un listado de la tabla “Productos.db”, unirlo con la tabla “Stock.db” a traves del campo “codigo” y me sume el campo “stock” agrupándolo por el campo “codigo” (que puede tener varios lotes), a su vez se una con la tabla “Pedidos.db” a traves del campo “codigo” y sume el campo “cantidad” agrupándolo por el campo “codigo” y me haga un calculo de lo que tengo que pedir hasta llegar al stockmaximo de cada producto, y que aparezcan solo los productos que su stock no llegue al stockminimo. En la tabla Stock.db y el la tabla “Pedidos.db” puede ser que algún producto no figure al no tener existencia o no estar Pedido.
Las tablas son estas:
Productos: Codigo A, Nombre A, Stockminimo N, StockMaximo N.
Stock: Codigo A, Nombre A, Stock N, Lote A, Estado A.
Pedidos: Codigo A, Nombre A, Cantidad N, Recibido A.
Y la consulta que he realizado es esta:
SELECT
P.codigo, P.Nombre, sum(S.stock) , P.StockMinimo,
P.StockMaximo, sum(PP.Cantidad), (P.Stockmaximo-sum(S.Stock)-sum(PP.Cantidad))
FROM
Productos.db P LEFT JOIN Stock.db S ON P.Codigo = S.codigo
LEFT JOIN Pedidos.db PP ON S.Codigo = PP.Codigo
WHERE
S.Estado = 'ABIERTO'
AND PP.Recibido ='PENDIENTE'
GROUP BY
P.Codigo, P.Nombre, P.StockMinimo, P.StockMaximo, PP.CodigoPt
HAVING
Sum(S.Stock) < P.StockMinimo
ORDER BY P.Codigo
Trabajo con Delphi 2 y Paradox 7
Mis Problemas son:
1. Los campos sin valor no me los calcula.
2. no me aparece ningún cálculo de sum(PP.Cantidad) si no hay coincidencia de código con la tabla Stock.db.
3. al poner la clausula HAVING no aparacen los nulos de “ ON P.Codigo = S.Codigo “
4. Me suma mal el campo “cantidad” de la tabla pedidos, si en la tabla Stock aparece repetido algún campo “codigo”, me lo suma tantas veces como repeticiones haya en este campo .
Llevo rompiéndome la cabeza con este problema bastante tiempo no se si voy por el buen camino y agradezco cualquier ayuda.