[Php-avanzado] Proyecciones SQL
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Sab Jul 6 21:56:13 ART 2013
Hola Ariel,
El sáb, 06-07-2013 a las 20:05 -0300, Ariel Fernández escribió:
> Hola Leo, cómo estás?
Queriendo terminar la semana ;-)
> 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?
Estoy viendo los enunciados, y no me coinciden con tu pregunta... tal
vez los envié mal:
a) Ver productos y su cantidad (cod des pre cant alm)
b) Ver producos con stock > 5 (cod des cant)
c) Ver cantidad productos x almacen (alm cant)
d) Total productos (total)
e) Precios promedio de los productos (promedio)
f) Total de productos por almacen (alm cant prod)
g) Precios promedios por almacen (alm cod des prom)
El e) solo proyecta un registro con un campo: el valor promedio de los
productos.
> 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
No es lo que pide el enunciado ;-)
Ché, Ariel, si ejecutás las querys en tus tablas con tus lotes de
prueba, te dan respuestas coherentes????
Las querys lucen bien.
Si te las dan, las querys están bien.
Si no te las dan, dame un vuelco de las tablas, la query, lo que
esperás obtener, y vemos qué hacer para que funcione.
Saludos!
> 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
>
>
>
>
>
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado