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

[SOLUCIONADO] Hacer suma, dependiendo de un valor

Estas en el tema de Hacer suma, dependiendo de un valor en el foro de Mysql en Foros del Web. Tengo una consulta así: SELECT campos, dato1 + dato2 + dato3 + dato4 + dato5 + dato6 + dato7 + dato8 + dato9 FROM $tabla ...
  #1 (permalink)  
Antiguo 20/05/2014, 08:54
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Hacer suma, dependiendo de un valor

Tengo una consulta así:

SELECT campos,
dato1 +
dato2 +
dato3 +
dato4 +
dato5 +
dato6 +
dato7 +
dato8 +
dato9
FROM $tabla

Deseo sumar dede dato1 hasta datox dependiendo del valor de la variable: campos
Por ejemplo, si la variable campos=5 debo sumar así:

SELECT campos,
dato1 +
dato2 +
dato3 +
dato4 +
dato5
FROM $tabla

¿Como podría crear este tipo de consulta?
Por ahora, para resolverlo, creo al instruccion en PHP quien me la genera con los campos adecuados, pero imagino mySQL lo puede hacer.

Gracias
  #2 (permalink)  
Antiguo 20/05/2014, 09:41
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Hacer suma, dependiendo de un valor

Hola Bier:

No entiendo muy bien el sentido de tu consulta, pero veamos si se este planteamiento te puede servir... puedes utilizar una función CASE-WHEN para evaluar el valor de CAMPO y en cada caso hacer la suma que desees. checa este ejemplo:


Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +-------+-------+-------+-------+-------+-------+
  3. | campo | dato1 | dato2 | dato3 | dato4 | dato5 |
  4. +-------+-------+-------+-------+-------+-------+
  5. |     1 |     1 |     1 |     1 |     1 |     1 |
  6. |     2 |     2 |     2 |     2 |     2 |     2 |
  7. |     3 |     3 |     3 |     3 |     3 |     3 |
  8. |     4 |     4 |     4 |     4 |     4 |     4 |
  9. |     5 |     5 |     5 |     5 |     5 |     5 |
  10. +-------+-------+-------+-------+-------+-------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> SELECT campo,
  14.     -> CASE campo
  15.     ->     WHEN 1 THEN dato1
  16.     ->     WHEN 2 THEN dato1 + dato2
  17.     ->     WHEN 3 THEN dato1 + dato2 + dato3
  18.     ->     WHEN 4 THEN dato1 + dato2 + dato3 + dato4
  19.     ->     WHEN 5 THEN dato1 + dato2 + dato3 + dato4 + dato5
  20.     -> END suma
  21.     -> FROM tabla;
  22. +-------+------+
  23. | campo | suma |
  24. +-------+------+
  25. |     1 |    1 |
  26. |     2 |    4 |
  27. |     3 |    9 |
  28. |     4 |   16 |
  29. |     5 |   25 |
  30. +-------+------+
  31. 5 rows in set (0.00 sec)

Observa que para cada valor que puede tomar CAMPO se hace una suma, no sé si sea más o menos lo que pretendes hacer...

Dale un vistazo y nos comentas.

Saludos
Leo
  #3 (permalink)  
Antiguo 20/05/2014, 10:23
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Respuesta: Hacer suma, dependiendo de un valor

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola Bier:

No entiendo muy bien el sentido de tu consulta, pero veamos si se este planteamiento te puede servir... puedes utilizar una función CASE-WHEN para evaluar el valor de CAMPO y en cada caso hacer la suma que desees. checa este ejemplo:


Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +-------+-------+-------+-------+-------+-------+
  3. | campo | dato1 | dato2 | dato3 | dato4 | dato5 |
  4. +-------+-------+-------+-------+-------+-------+
  5. |     1 |     1 |     1 |     1 |     1 |     1 |
  6. |     2 |     2 |     2 |     2 |     2 |     2 |
  7. |     3 |     3 |     3 |     3 |     3 |     3 |
  8. |     4 |     4 |     4 |     4 |     4 |     4 |
  9. |     5 |     5 |     5 |     5 |     5 |     5 |
  10. +-------+-------+-------+-------+-------+-------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> SELECT campo,
  14.     -> CASE campo
  15.     ->     WHEN 1 THEN dato1
  16.     ->     WHEN 2 THEN dato1 + dato2
  17.     ->     WHEN 3 THEN dato1 + dato2 + dato3
  18.     ->     WHEN 4 THEN dato1 + dato2 + dato3 + dato4
  19.     ->     WHEN 5 THEN dato1 + dato2 + dato3 + dato4 + dato5
  20.     -> END suma
  21.     -> FROM tabla;
  22. +-------+------+
  23. | campo | suma |
  24. +-------+------+
  25. |     1 |    1 |
  26. |     2 |    4 |
  27. |     3 |    9 |
  28. |     4 |   16 |
  29. |     5 |   25 |
  30. +-------+------+
  31. 5 rows in set (0.00 sec)

Observa que para cada valor que puede tomar CAMPO se hace una suma, no sé si sea más o menos lo que pretendes hacer...

Dale un vistazo y nos comentas.

Saludos
Leo
Estimadísimo Leo,

No es que sea mas o menos así... es exactamente lo que requiero.
¿Acaso eres mago? Me adivinaste el pensamiento.

Voy a estudiar esas instrucciones.
Mil gracias.
  #4 (permalink)  
Antiguo 20/05/2014, 11: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, 5 meses
Puntos: 2658
Respuesta: Hacer suma, dependiendo de un valor

La solución de Leonardo_josue es eficiente, y bien explicada.
De todos modos yo propondría algo como:
Código MySQL:
Ver original
  1. SELECT campos,
  2.     (IF( dato1 <= $valor, dato1, 0) +
  3.     IF( dato2 <= $valor, dato2, 0) +
  4.     IF( dato3 <= $valor, dato3, 0) +
  5.     IF( dato4 <= $valor, dato4, 0) +
  6.     IF( dato5 <= $valor, dato5, 0)) sumaTotal
  7. FROM $tabla
Sigue existiendo el problema de saber cuántos campos son, pero podría andar.
__________________
¿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 20/05/2014, 11:24
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Respuesta: Hacer suma, dependiendo de un valor

Cita:
Iniciado por gnzsoloyo Ver Mensaje
La solución de Leonardo_josue es eficiente, y bien explicada.
De todos modos yo propondría algo como:
Código MySQL:
Ver original
  1. SELECT campos,
  2.     (IF( dato1 <= $valor, dato1, 0) +
  3.     IF( dato2 <= $valor, dato2, 0) +
  4.     IF( dato3 <= $valor, dato3, 0) +
  5.     IF( dato4 <= $valor, dato4, 0) +
  6.     IF( dato5 <= $valor, dato5, 0)) sumaTotal
  7. FROM $tabla
Sigue existiendo el problema de saber cuántos campos son, pero podría andar.
Gracias gnzsoloyo,
Tu solución es muy sencilla, incluso aplica para muchas otras necesidades... La analizaré más a detalle, se que además me servidrá para otras funciones.

Te agradezco.

Etiquetas: campo, dependiendo, php, select, sql, suma, tabla, valor
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 13:44.