[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