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

me podrían ayudar con un case when por favor

Estas en el tema de me podrían ayudar con un case when por favor en el foro de Mysql en Foros del Web. tengo una mysql en la que me muestra las personas que deben dinero y las que han pagado, el problema es que cuando el resultado ...
  #1 (permalink)  
Antiguo 03/05/2012, 03:49
 
Fecha de Ingreso: agosto-2010
Ubicación: Actualmente en Bilbao-España
Mensajes: 35
Antigüedad: 13 años, 8 meses
Puntos: 0
Busqueda me podrían ayudar con un case when por favor

tengo una mysql en la que me muestra las personas que deben dinero y las que han pagado, el problema es que cuando el resultado es 0 sale 'null' en lugar del 0, supongo que la unica forma de arreglar esto es con un case when o un if, y esto es lo que tengo no se como estructurarlo bien :/... de antemano, agradezco mucho.. :)
SELECT case when( nombre_padre, nombre_madre,facturas.id,
(
SELECT sum(total)
from actividades
where facturas.id=actividades.id_factura and facturas.pagado=1
) AS PAGADO,

(
SELECT sum(total)
from actividades
where facturas.id=actividades.id_factura and facturas.pagado=0
) AS Deuda

)=null then '0' else '(
SELECT sum(total)
from actividades
where facturas.id=actividades.id_factura and facturas.pagado=1
) AS PAGADO'
FROM facturas, padres
WHERE facturas.id_padres=padres.id and facturas.ano=2012 and facturas.mes=1
  #2 (permalink)  
Antiguo 03/05/2012, 05:44
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: me podrían ayudar con un case when por favor

Hola YoLO10,

Una opción es usar IFNULL. Como no entiendo bien tu query (consulta) uso un ejemplo genérico que te puede ayudar http://sqlfiddle.com/#!2/6825c/3
  #3 (permalink)  
Antiguo 03/05/2012, 21:14
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: me podrían ayudar con un case when por favor

Yo probaría algo así:
Código MySQL:
Ver original
  1.     P.nombre_padre,
  2.     P.nombre_madre,
  3.     SUM(IF(F.pagado = 1, total, 0)) Pagado,
  4.     SUM(IF(F.pagado = 0, total, 0)) Deuda
  5. FROM facturas F INNER JOIN actividades A ON F.id = A.id_factura
  6.     INNER JOIN padres P ON F.id_padres = P.id
  7.     F.ano=2012 AND F.mes=1
  8. GROUP BY P.nombre_padre, P.nombre_madre,
Aclaremos que en si estás usando SUM() o cualquier otra función de agregación, es obligatorio usar GROUP BY y no puedes discriminar (en tu caso) por ID de factura, porque las estás sumando. En ese contexto, poner ese ID no tiene sentido.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 04/05/2012, 08:59
 
Fecha de Ingreso: agosto-2010
Ubicación: Actualmente en Bilbao-España
Mensajes: 35
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: me podrían ayudar con un case when por favor

Al final utilice este;
Código MySQL:
Ver original
  1. SELECT nombre_padre, nombre_madre,facturas.id,
  2. (
  3. SELECT sum(total)
  4. from actividades
  5. where facturas.id=actividades.id_factura and facturas.pagado=1
  6. ) AS PAGADO ELSE '0',
  7. (
  8. SELECT sum(total)
  9. from actividades
  10. where facturas.id=actividades.id_factura and facturas.pagado=0
  11. ) AS Deuda ELSE '0'
  12. FROM facturas, padres
  13. WHERE facturas.id_padres=padres.id and facturas.ano=2012 and facturas.mes=1

Muchisimas gracias por la ayuda :D...
  #5 (permalink)  
Antiguo 04/05/2012, 09:28
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: me podrían ayudar con un case when por favor

¿Te das cuenta que usar subcosultas en el SELECT es muy ineficiente, no?
¿Probaste lo que te puse? ¿Le encontraste algún problema?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: asd, case
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 21:31.