Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Mysql - suma if condicion where ese resultado

Estas en el tema de Mysql - suma if condicion where ese resultado en el foro de Mysql en Foros del Web. wenas puede que el titulo se un poco confuso pero no sabria poner un titulo a este tema ... comento tengo esta sentencia @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 30/03/2013, 18:52
Avatar de damid3  
Fecha de Ingreso: noviembre-2012
Mensajes: 90
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Mysql - suma if condicion where ese resultado

wenas puede que el titulo se un poco confuso pero no sabria poner un titulo a este tema ...

comento
tengo esta sentencia
Código MySQL:
Ver original
  1. SELECT articulos.codigo,articulos.nombre,articulos.minimo,  
  2. IFNULL(sum(stocks.ingreso)-sum(stocks.egreso),0) AS cantidad  
  3. FROM stock.articulos LEFT JOIN stock.stocks ON articulos.codigo = stocks.codigo
  4. WHERE stock.articulos.fuera_de_lista = 'False' and cantidad<=articulos.minimo
  5. GROUP BY articulos.codigo
  6. ORDER BY articulos.codigo ASC

la idea es que solo muestre las sumas que son menores al minimo
en la condicion "WHERE" le pongo que solo muestre el resultado (cantidad) que es menor que el minimo de la tabla articulo donde esta el articulo sumado

pero evidentemente no lo pongo bien

Si alguno puede darme un consejo o una ayuda seria genial


Saludos

Última edición por damid3; 30/03/2013 a las 19:05
  #2 (permalink)  
Antiguo 30/03/2013, 19:09
Avatar de 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, 4 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)
  #3 (permalink)  
Antiguo 30/03/2013, 19:37
Avatar de damid3  
Fecha de Ingreso: noviembre-2012
Mensajes: 90
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Mysql - suma if condicion where ese resultado

Muchas gracias tienes razon es que soy nuevo en esto te agradezco

la respuesta que me diste era lo que buscaba muchas gracias !


Saludos

Etiquetas: join, resultado, select, suma, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:03.