Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/03/2013, 19:09
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: Mysql - suma if condicion where ese resultado

Limpiando un poco...
Código MySQL:
Ver original
  1.     A.codigo,
  2.     A.nombre,
  3.     IFNULL(sum(S.ingreso)-sum(S.egreso),0) cantidad  
  4.     articulos A
  5.     LEFT JOIN stocks S ON A.codigo = S.codigo
  6.     A.fuera_de_lista = 'False'
  7.     AND cantidad <= A.minimo
  8. GROUP BY A.codigo
  9. ORDER BY A.codigo ASC

El error básico es simple: Estás inentando comparar un valor de un campo de una tabla contra un alias del SELECT y ningún DBMS permite hacer eso. Todo campo que aparezca en el WHERE debe ser siempre un campo real de una tabla que figure en el FROM.
No se pueden usar ni alias de columnas, generados en el SELECT de la misma consulta, ni tampoco funciones agregadas.
Es una restricción generalizada de todos los DBMS.

Para lograr lo que quieres debes transformar esa consulta en una subconsulta y obtener una tabla derivada:
Código MySQL:
Ver original
  1.     codigo,
  2.     nombre,
  3.     cantidad
  4.     (SELECT
  5.         A.codigo,
  6.         A.nombre,
  7.         IFNULL(sum(S.ingreso)-sum(S.egreso),0) cantidad,
  8.         A.minimo
  9.     FROM
  10.         articulos A
  11.         LEFT JOIN stocks S ON A.codigo = S.codigo
  12.     WHERE A.fuera_de_lista = 'False'
  13.     GROUP BY A.codigo) T1
  14. WHERE cantidad <= minimo
  15. ORDER BY codigo ASC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)