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

Funcion de saldo en MySql

Estas en el tema de Funcion de saldo en MySql en el foro de Mysql en Foros del Web. Buenas Tardes: Necesitaría alguien que me ayude con esta funcion en MySql que debo hacer para calcular el saldo de una persona Me canta error ...
  #1 (permalink)  
Antiguo 18/04/2011, 15:51
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años, 7 meses
Puntos: 3
Funcion de saldo en MySql

Buenas Tardes:
Necesitaría alguien que me ayude con esta funcion en MySql que debo hacer para calcular el saldo de una persona
Me canta error al ejecutarla. y no se que es lo que estoy ahciendo mal.

create function saldo(xidusuario int) returns int
begin
select @positivo:=sum(importe) from cuentacorriente left join tipomovimientos using (idtipomovimiento) where idusuario=@xidusuario and signo='+';
select @negativo:=sum(importe) from cuentacorriente left join tipomovimientos using (idtipomovimiento) where idusuario=@xidusuario and signo='-';return positivo-negativo;
return(@positivo-@negativo)
end;

Muchas Gracias por su atencion
  #2 (permalink)  
Antiguo 19/04/2011, 04:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Funcion de saldo en MySql

Y si haces directamente esto

Código MySQL:
Ver original
  1. select sum(if(signo='+',importe,0)) as ingresos,  
  2.           sum(if(signo='-',importe,0)) as reintegros
  3.           sum(if(signo='+',importe,0)-if(signo='-',importe,0)) as Saldo
  4. from cuentacorriente left join tipomovimientos using (idtipomovimiento)
  5. where idusuario=XX;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 19/04/2011, 06:10
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Funcion de saldo en MySql

Buen Dia Quimfv:
Estoy haciendo una prueba en el SQL de PhpMyadmin con el codigo:
SELECT sum(if(signo='+',importe,0)) as ingresos,
sum(if(signo='-',importe,0)) as reintegros
sum(if(signo='+',importe,0)-if(signo='-',importe,0)) as Saldo
FROM cuentacorriente LEFT JOIN tipomovimientos USING (idtipomovimiento)
WHERE idusuario=2
y me da el siguiente error:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sum(if(signo='+',importe,0)-if(signo='-',importe,0)) as Saldo FROM cuentacorrie' at line 3

La verdad no se que problema estoy teniendo.
Muchas Gracias por tu ayuda
  #4 (permalink)  
Antiguo 19/04/2011, 06:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Funcion de saldo en MySql

Bueno, este es fácil: Te falta una coma en la segunda columna:
Código MySQL:
Ver original
  1.   sum(if(signo='+',importe,0)) as ingresos,
  2.   sum(if(signo='-',importe,0)) as reintegros,
  3.   sum(if(signo='+',importe,0)-if(signo='-',importe,0)) as Saldo
  4. FROM cuentacorriente LEFT JOIN tipomovimientos USING (idtipomovimiento)
  5. WHERE idusuario=2;
Ahora bien, ¿tienes un campo que define si debes sumar o restar el importe? Eso no resulta un modelo eficiente ni razonable.
Los DEBE y HABER de las cuentas se crean separadamente porque son atributos y conceptos completamente diferentes. Modelarlo en un sólo campo te haría reprobar en cualquier cursada de Análisis de Sistemas o Base de Datos.
Lo que estás poniendo es como usar la misma columna en el libro de Caja en un negocio para sumar o restar. No puedes.
Además te aclaro que la consulta sería muchísimo más fácil de escribir si pones las cosas correctamente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 19/04/2011, 07:52
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Funcion de saldo en MySql

Muchas Gracias amigo por tu ayuda

Etiquetas: funcion
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 22:25.