jueves, 13 de diciembre de 2012

Resolución ejercicio final (18) - Ver stock de todos los productos.



RESOLUCIÓN DEL PUNTO 15 DEL ENUNCIADO DEL EJERCICIO FINAL.

En esta entrada resolveremos el punto 15:
Ver stock de todos los productos.


El proceso es idéntico al llevado a cabo para resolver el punto 14 Ver stock de un producto solo que en este caso no es preciso filtrar ningún código de artículo.

select articulos.id_articulo, nombre,
sum(lin_ac.cantidad) as compras,
sum(lin_fv.cantidad) as ventas,
(case when sum(lin_ac.cantidad) is null then 0 else sum(lin_ac.cantidad) end -
case when sum(lin_fv.cantidad) is null then 0 else sum(lin_fv.cantidad) end) as stock
from articulos left join lin_ac
on articulos.id_articulo = lin_ac.id_articulo
left join lin_fv
on articulos.id_articulo = lin_fv.id_articulo
group by id_articulo
having stock > 0;





NOTA: Se ha añadido la subcláusula HAVING para que solo salgan en el listado los artículos con stock, si se elimina esa subconsulta, se mostrarán todos los artículos, aunque no tengan stock.

Recordar que HAVING actúa como WHERE pero sobre los datos ya agrupados.






Otra posible solución es utilizar la tabla ubicación, en la cual actualizaremos el stock para cada compra y cada venta realizada.



select nombre, sum(stock) as total_stock
from articulos inner join ubicacion
on articulos.id_articulo = ubicacion.id_articulo
group by ubicacion.id_articulo
having total_stock > 0;



No hay comentarios:

Publicar un comentario