Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/06/2013, 21:13
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: Problema con consulta avanzada

Cita:
La tabla de "Productos" que mencionas, segun entiendo de momento no la necesito a menos que sea para obtener el nombre del producto ya que en ventas y compras puedo relacionarlas con IDPRODUCTO, ¿estoy en lo correcto?
No. No es correcto.
Como puede suceder que no tengas la misma cantidad de productos con movimientos de compras que de ventas en un mes dado, se debe usar la tabla Productos para obtener cada subconjunto, tal que permita recuperar aquellos que sin tener ventas tengan compras o viceversa.
¿Se enteinde?
La base de datos no puede crear datos que no existen.
Si el producto A no tuvo movimientos de Compra en el mes N, pero si tuvo ventas, no podrás cruzar ambos resultados ya que el producto N no existirá en la tabla de Compras, por lo que el resultado será NULL (no devolverá el registro). Y no se puede adivinar cuál es el que si tendrá el producto y cuál no ¿qué pasaría si otro producto tiene ventas, pero no compras?)
En cambio, si cruzas con Productos haciendo un LEFT JOIN, obtendrás primero un subconjunto con Compras en cero (0), y luego el movimiento de Ventas de ese producto, que será mayor a cero.
Al consolidar ambos subconjuntos, cruzando los ID de los productos, tendrás los valores correctos para cada mes... uno en cero y el otro no.

Las tablas base son siempre necesarias cuando haces reportes de este tipo.
Siempre.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)