[Php-avanzado] Proyecciones SQL

Ariel Fernández arielf05 en gmail.com
Sab Jul 6 22:25:06 ART 2013


ok, entonces el e queda asi:

SELECT round(AVG( precio ),2) AS  "Precio promedio" FROM productos

*consulta SQL:* SELECT round(AVG( precio ),2) AS "Precio promedio" FROM
productos LIMIT 0, 30 ;
*Filas:* 1

Precio promedio12.04





Sí, las querys me dan respuestas coherentes:


*A:                                              *

*consulta SQL:* 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 LIMIT 0, 30 ;
*Filas:* 12

codigodescripcionpreciocantidadnombre4040ayudin x1L6.50400almacen 14041ayudin
x2L12.75320almacen 14042ayudin x3L17.55680almacen 14043ayudin ropa blanca
x1L10.452560almacen 13003seiseme jabon x3004.856650almacen 148686coloso
lavandina x5L20.150almacen 14040ayudin x1L6.50150almacen 24041ayudin x2L
12.7595almacen 24042ayudin x3L17.55276almacen 24043ayudin ropa blanca x1L
10.451980almacen 23003seiseme jabon x3004.853480almacen 248686coloso
lavandina x5L20.150almacen 2




*B:                                                   *

*consulta SQL:* 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 LIMIT 0, 30 ;
*Filas:* 3

codigodescripcionprecioStock4042ayudin x3L17.559564043ayudin ropa blanca x1L
10.4545403003seiseme jabon x3004.8510130




*C:                             *

*consulta SQL:* SELECT A.nombre, 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 LIMIT 0, 30 ;
*Filas:* 2

nombreStock Totalalmacen 110610almacen 25981





*D:                                                *

*consulta SQL:* select count(id) as "Cantidad de articulos" from productos;
*Filas:* 1

Cantidad de articulos6




*F:                                       *

*consulta SQL:* 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 LIMIT 0, 30 ;
*Filas:* 12

AlmacendescripcionStockalmacen 1seiseme jabon x3006650almacen 1ayudin
x1L400almacen
1ayudin x2L320almacen 1ayudin x3L680almacen 1ayudin ropa blanca x1L2560almacen
1coloso lavandina x5L0almacen 2seiseme jabon x3003480almacen 2ayudin
x1L150almacen
2ayudin x2L95almacen 2ayudin x3L276almacen 2ayudin ropa blanca x1L1980almacen
2coloso lavandina x5L0




*G:                                   *

*consulta SQL:* 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 LIMIT 0, 30 ;
*Filas:* 2

AlmacenPrecio Promedioalmacen 112.04almacen 212.04

En éste da el mismo promedio porque en las dos almacenes tengo los mismos
productos, sólo varían los stocks.












El 6 de julio de 2013 21:56, Leonardo Tadei - Pegasus Tech Supply <
leonardot en pegasusnet.com.ar> escribió:

> 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
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20130706/55f6f9cd/attachment-0001.html>


Más información sobre la lista de distribución Php-avanzado