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

[SOLUCIONADO] Sumar dentro de un IF

Estas en el tema de Sumar dentro de un IF en el foro de Mysql en Foros del Web. Hola amigos estoy un poco perdido y se que estoy haciendo algo mal con esta consulta. IF(price<=35,price + 7,price*1.33) Lo que quiero es que si ...
  #1 (permalink)  
Antiguo 23/02/2017, 03:27
 
Fecha de Ingreso: febrero-2015
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Sumar dentro de un IF

Hola amigos estoy un poco perdido y se que estoy haciendo algo mal con esta consulta.

IF(price<=35,price + 7,price*1.33)

Lo que quiero es que si el precio es menor o igual a 35 le sume 7 al precio y sino que multiplique el precio por 1.33, pero cuando ejecuto el resultado siempre es 7.

Gracias de antemano.

Ya vi mi error, es que price es una cadena, creo que tendre que convertirla a numbero.

Última edición por alexiscruz007; 23/02/2017 a las 03:49
  #2 (permalink)  
Antiguo 23/02/2017, 04:54
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: Sumar dentro de un IF

La verdad, no veo que pueda pasar eso. Solamente tiene sentido si hay problema con los datos de tu tabla.

SI hago una prueba con variables de sesión en MySQL, obtengo:
Código SQL:
Ver original
  1. mysql> SELECT @price:=30;
  2. +------------+
  3. | @price:=30 |
  4. +------------+
  5. |         30 |
  6. +------------+
  7. 1 ROW IN SET (0.14 sec)
  8.  
  9. mysql> SELECT @price;
  10. +--------+
  11. | @price |
  12. +--------+
  13. |     30 |
  14. +--------+
  15. 1 ROW IN SET (0.02 sec)
  16.  
  17. mysql> SELECT IF(@price<=35, @price + 7, @price* 1.33) total;
  18. +-------+
  19. | total |
  20. +-------+
  21. |    37 |
  22. +-------+
  23. 1 ROW IN SET (0.09 sec)
  24.  
  25. mysql> SELECT @price:=38;
  26. +------------+
  27. | @price:=38 |
  28. +------------+
  29. |         38 |
  30. +------------+
  31. 1 ROW IN SET (0.00 sec)
  32.  
  33. mysql> SELECT IF(@price<=35, @price + 7, @price* 1.33) total;
  34. +-------+
  35. | total |
  36. +-------+
  37. | 50.54 |
  38. +-------+
  39. 1 ROW IN SET (0.05 sec)

Así que no, no es un tema de la formula ni del uso de IF(), es un tema de datos.
__________________
¿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 23/02/2017, 13:35
 
Fecha de Ingreso: febrero-2015
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Sumar dentro de un IF

Gracias por responder gnzsoloyo, tienes toda la razon es un problema de datos

el asunto es que price no es numero si no caracteres, aparencen por ejemplo US$23.56.

Lo interesante es que lo resolvi sin usar cast o convert.

IF(substr(price, 5)<=35,substr(price, 5)+7,substr(price, 5)*1.33),

De todos modos lo dejo por si a alguien se confunde como yo y no mira bien el tipo de datos.

Etiquetas: Ninguno
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:45.