Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/08/2009, 05:29
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: resta de 2 campos

Más o menos así:
Código sql:
Ver original
  1. SELECT
  2.    p.id_producto,
  3.    (p.cantidad - t.total_apuntados) saldo_productos,
  4.    t.eliminado,
  5.    t.vendedor
  6. FROM productos p INNER JOIN
  7.    (SELECT
  8.       SUM(cantidad) total_apuntados,
  9.       id_producto,
  10.       vendedor,
  11.       eliminado
  12.    FROM apuntados,
  13.    WHERE
  14.       vendedor = colname
  15.       AND apuntados.eliminado='no'
  16.    GROUP BY id_producto) T  USING(id_producto)
  17. ORDER BY id_producto;
La lógica a aplicar es al revés. Si los registros que sí o si se deben usar están en productos es esa la tabla que debes usar como pivote, y a esa le debes restar el resultado ya sumado y filtrado de la otra. No es conveniente hacer eso fuera de una subconsulta porque obligarías al MySQL a realizar primero el JOIN a todos los registros, para luego sumar los que cumplen la condición. Eso implicaría crear una tabla temporal innecesariamente grande, ya que no todos los registros cruzados se usarán en el resultado final, cosa que si pasa con este modelo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)