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

[SOLUCIONADO] Suma de cantidades

Estas en el tema de Suma de cantidades en el foro de Mysql en Foros del Web. Buen dia amigos foristas, tengo un problema que hasta por los momentos no he podido solucionarlo... Tengo una tabla que se llama valor_historico y uno ...
  #1 (permalink)  
Antiguo 24/04/2014, 07:19
 
Fecha de Ingreso: diciembre-2008
Ubicación: Av. Republica Casa#106
Mensajes: 125
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Suma de cantidades

Buen dia amigos foristas, tengo un problema que hasta por los momentos no he podido solucionarlo... Tengo una tabla que se llama valor_historico y uno de sus campos lleva por nombre valor. Hay se almacena el costo de un producto en monedas. por ejemplo: 4.890.000,00. Mi pregunta es... Como yo hago para realizar una consulta que me sume la cantidad exacta y me de un total exacto de todos los costo que tengo almacenados en ese campo.

Ejemplo:

4.890.000,00 +
4.000.000,00 +
8.900.000,00 +
1.855.000,00
------------
19.645.000,00

Los montos que coloque en el ejemplo son reales.
  #2 (permalink)  
Antiguo 24/04/2014, 07:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Suma de cantidades

Código MySQL:
Ver original
  1. SELECT SUM(valor) FROM TuTabla;

Esto?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 24/04/2014, 08:47
 
Fecha de Ingreso: diciembre-2008
Ubicación: Av. Republica Casa#106
Mensajes: 125
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Suma de cantidades

Amigo ya probe con esa consulta y solamente me toma los primeros valores de los millones. me suma solamente 4+4+8+1=17
  #4 (permalink)  
Antiguo 24/04/2014, 08:51
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, 5 meses
Puntos: 2658
Respuesta: Suma de cantidades

Si los números que tienes están almacenados así:
Cita:
4.890.000,00 +
4.000.000,00 +
8.900.000,00 +
1.855.000,00
------------
19.645.000,00
con puntos y coma decimal, desde ya los tienes mal almacenados y encima en un VARCHAR.
Para números de precisión se debe usar campos ECIMAL, que en tu caso sería un DECIMAL(12,2), por ejemplo.
Si es así, ahora tendrás que limpiar la basura que has guardado.
__________________
¿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 24/04/2014, 12:46
 
Fecha de Ingreso: diciembre-2008
Ubicación: Av. Republica Casa#106
Mensajes: 125
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Suma de cantidades

Acabo de probar poniendo en la estructura del campo la extension DECIMAL y me recibe solamente 4.89. esos numeros son en moneda venezolana 4.890.000,00 BsF
  #6 (permalink)  
Antiguo 24/04/2014, 13:04
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, 5 meses
Puntos: 2658
Respuesta: Suma de cantidades

Eso pasa porque estás ingresando con puntos como separadores de miles, y el punto es para decimales....
Olvídate de la representación de losnumeros, eso es tema de la aplicación. A la base debes usar numeros con punto decimal y sin separadores de miles, porque en un campo numérico NO EXISTEN. Los números se almacenan internamente como BINARIOS, no son cifras..
Código MySQL:
Ver original
  1. INSERT INTO tabla(campoDecimal)
  2. VALUES(4890000.00);
Y jamás de los jamáses se ponen los tipos de moneda en el campo. Eso en todo caso va en otra columna, para usos de la aplicaicón. La base de datos NO entiende de monedas. Sólo de números.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 25/04/2014, 02:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Suma de cantidades

Agrega un campo llmado nvalor con formato DECIMAL(12,2) y luego ejecuta la siguiente query

Código MySQL:
Ver original
  1. UPDATE tuTabla SET nValor=CONVERT(REPLACE(REPLACE(valor,'.',''),",","."),SIGNED DECIMAL);

CONVERT(--string---,SIGNED DECIMAL) no tengo claro si es necesario ni si la sintaxis es esa.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 25/04/2014 a las 07:27
  #8 (permalink)  
Antiguo 25/04/2014, 07:20
 
Fecha de Ingreso: diciembre-2008
Ubicación: Av. Republica Casa#106
Mensajes: 125
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Suma de cantidades

Buen dia amigos foristas, el dia de ayer estuve investigando mas a fondo y encontre una linea de codigo muy sensilla que la coloco al momento de mostrar la informacion en un reporte, el tipo de campo lo coloque INT. Cuando mando las cifras las envio sin puntos y sin comas, cuando muestro la informacion el codigo me transforma todo a como yo en un principio estaba solicitando informacion.

Aqui les dejo la linea de codigo, no se si se puede mejorar y espero que a alguien mas le funcione.

Cita:
Editado: Código de programación no permitido en foros de Bases de datos. Leer las normas del foro, por favor.
recuerden que donde se va a almacenar las cifras el campo debe ir de tipo INT.

Muchas gracias a todos...

Última edición por gnzsoloyo; 25/04/2014 a las 08:02
  #9 (permalink)  
Antiguo 25/04/2014, 07:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Suma de cantidades

Si tiene decimales no lo pongas tipo INT (Entero)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #10 (permalink)  
Antiguo 25/04/2014, 08:08
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, 5 meses
Puntos: 2658
Respuesta: Suma de cantidades

Cita:
Iniciado por The_Black_Edward Ver Mensaje
Buen dia amigos foristas, el dia de ayer estuve investigando mas a fondo y encontre una linea de codigo muy sensilla que la coloco al momento de mostrar la informacion en un reporte, el tipo de campo lo coloque INT. Cuando mando las cifras las envio sin puntos y sin comas, cuando muestro la informacion el codigo me transforma todo a como yo en un principio estaba solicitando informacion.

Aqui les dejo la linea de codigo, no se si se puede mejorar y espero que a alguien mas le funcione.

recuerden que donde se va a almacenar las cifras el campo debe ir de tipo INT.

Muchas gracias a todos...
¿Por qué lo pones como INT?
Ya te explicamos que para ese tipo de valores lo que corresponde es DECIMAL, no enteros.
Si quieres, puedes comprobarlo en el manual de referencia:
Cita:
Los tipos DECIMAL y NUMERIC se implementan como el mismo tipo en MySQL. Se usan para guardar valores para los que es importante preservar una precisión exacta, por ejemplo con datos monetarios. Cuando se declara una columna de alguno de estos tipos, la precisión y la escala puede especificarse (y usualmente se hace), por ejemplo:
Código SQL:
Ver original
  1. salary DECIMAL(5,2)

En este ejemplo, 5 es la precisión y 2 es la escala. La precisión representa el número de dígitos decimales significativos que se almacenan para los valores, y la escala representa el número de dígitos que pueden almacenarse a continuación del punto decimal.

Desde MySQL 5.0.3, los valores DECIMAL y NUMERIC se almacenan en formato binario. Antes de 5.0.3, MySQL almacena los valores DECIMAL y NUMERIC como cadenas de caracteres, en lugar de binario. .Un carácter se usa para cada dígito del valor, el punto decimal (si la escala es mayor que 0), y el signo '-' (para números negativos). Si la escala es 0, los valores DECIMAL y NUMERIC no contienen punto decimal o parte fraccional.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 25/04/2014, 09:54
 
Fecha de Ingreso: diciembre-2008
Ubicación: Av. Republica Casa#106
Mensajes: 125
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Suma de cantidades

Amigo gnzsoloyo probe como me señalas en la cita, Lo cambie de tipo INT a tipo DECIMAL (12,2) y tambien me funciono a la perfeccion. De nuevo muchas gracias

Etiquetas: campo, 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 16:22.