Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/12/2011, 05:11
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta de resumen de dos tablas

Código MySQL:
Ver original
  1.     A.IdArt,
  2.     A.Modelo,
  3.     SUM(AC.Cantidad) Compradas,  
  4.     SUM(AV.Cantidad) Vendidas,
  5.     (SUM(AC.Cantidad) - SUM(AV.Cantidad)) Stock
  6.     Articulos A
  7.     LEFT JOIN ArtCompras AC ON A.IdArt = AC.IdArt
  8.     LEFT JOIN ArtVenta AV ON A.IdArt = AV.IdArt
  9. WHERE Articulos.IdArt IN (SELECT DISTINCT ArtCompras.IdArt FROM ArtCompras)
  10. GROUP BY  A.IdArt
  11. ORDER BY A.Modelo;
Los errores:
1) No se puede usar el alias de una columna del SELECT dentro del mismo SELECT. Tampoco se puede usar dentro del WHERE.
2) JOINs implicitos no sirven para hacer consultas con funciones de agregación con más de dos tablas.
3) El FROM estaba mal definido, y las relaciones del WHERE también. No estaban buscando os datos efectivamente indicados, ya que hacían depender (por ejemplo) las ventas de las compras, cosa que podía no ser verdadera (que compres stock de un artículo no implica que hayas vendido ese artículo en todo el período).
4) Agrupar por más de una columna es innecesario, si ambas columnas implican al mismo registro. Si cada modelo tiene un sólo ID y cada ID corresponde a un solo modelo, agrupar por ambos solo recarga el proceso pero no agrega nada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)