[Php-avanzado] Proyecciones SQL
Ariel Fernández
arielf05 en gmail.com
Sab Jul 6 20:05:32 ART 2013
Hola Leo, cómo estás?
Duda: en las proyecciones, inciso e:
precios promedio de los productos
indicas que hay que proyectar cod, des, prod, promedio
pero, qué promedio ? esta tabla productos no debería tener un solo precio
por producto ?
o repetimos los datos para agregar más de un precio a cada producto y así
poder hacer este ejercicio?
Resto:
*a: productos y su cantidad*
*variante 1: muestra total de stock por producto, sin discriminar almacen*
SELECT P.codigo, P.descripcion, P.precio, sum(S.cantidad) as Stock
FROM (productos as P, stock as S)
WHERE P.id=S.id_producto
GROUP BY S.id_producto
*variante 2: muestra total de stock por producto y por almacen*
SELECT P.codigo, P.descripcion, P.precio, S.cantidad,A.nombre
FROM (productos as P)
JOIN stock as S on P.id=S.id_producto
JOIN almacenes as A on S.id_almacen=A.id
GROUP BY S.id_almacen,S.id_producto
*b: productos con stock mayor a 590*
SELECT P.codigo, P.descripcion, P.precio, SUM( S.cantidad ) as Stock
FROM (productos AS P, stock AS S)
WHERE P.id = S.id_producto
GROUP BY S.id_producto, P.descripcion
HAVING SUM( S.cantidad ) > 590
*c: cantidad de productos por almacen*
SELECT A.nombre as "Almacen", sum(S.cantidad) as "Stock Total"
FROM (almacenes as A, stock as S)
WHERE A.id=S.id_almacen
GROUP BY S.id_almacen
ORDER BY A.nombre
*d: total de productos*
*variante 1: cantidad de articulos con stock mayor a 0 *
SELECT count(distinct id_producto) as "Cantidad de articulos con stock"
FROM stock
WHERE cantidad>0
*variante 2: cantidad total de articulos en sistema *
SELECT count(id) as "Cantidad de articulos"
FROM productos
*f: total de productos por almacen *
*si se refiere a total de stock de cada producto por almacen:*
SELECT A.nombre as "Almacen", P.descripcion, sum(S.cantidad) as "Stock"
FROM (almacenes as A)
JOIN stock as S on A.id=S.id_almacen
JOIN productos as P on S.id_producto=P.id
GROUP BY S.id_almacen,P.codigo
*si se refiere a cantidad de artículos por almacen:*
SELECT A.nombre as "Almacen", COUNT(S.id_producto) as "Cant.Arts."
FROM (almacenes as A)
JOIN stock as S on A.id=S.id_almacen
GROUP BY S.id_almacen
*g: precios promedios por almacen*
SELECT A.nombre as "Almacen", round(avg(P.precio),2) as "Precio Promedio"
FROM (almacenes as A)
JOIN stock as S on A.id=S.id_almacen
JOIN productos as P on P.id=S.id_producto
GROUP BY S.id_almacen
de vuelta: un solo precio por producto por almacen, es decir, que el
promedio es teniendo en cuenta todos los productos del almacen
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20130706/e590c327/attachment.html>
Más información sobre la lista de distribución Php-avanzado