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

Crear un update dentro de un if, como arreglo mi query?

Estas en el tema de Crear un update dentro de un if, como arreglo mi query? en el foro de Mysql en Foros del Web. Hola amigos, Una duda, como puedo hacer para que si se cumple una funcion se ejecute un update de lo contrario realice otro update. Tengo ...
  #1 (permalink)  
Antiguo 04/11/2012, 21:31
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 13 años, 5 meses
Puntos: 9
Exclamación Crear un update dentro de un if, como arreglo mi query?

Hola amigos,

Una duda, como puedo hacer para que si se cumple una funcion se ejecute un update de lo contrario realice otro update.
Tengo esto:

QUERY MYSQL:
Código MySQL:
Ver original
  1. IF(CONCEPTO = 'ENERO'
  2.         AND FECHA_SALDADA < DATE_FORMAT(FECHA_SALDADA, '2013-%m-%d' ) ,     (update pagos set baja = 1),
  3. (update pagos set baja = 2))
Como puedo ejecutar eso?

Muchas gracias, saludos!

Última edición por gnzsoloyo; 05/11/2012 a las 06:33 Razón: Etiquetado incorrecto
  #2 (permalink)  
Antiguo 05/11/2012, 02:17
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: Crear un update dentro de un if, como arreglo mi query?

Pon la condición del IF en el WHERE del UPDATE o utiliza un CASE en el SET
  #3 (permalink)  
Antiguo 05/11/2012, 06:38
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: Crear un update dentro de un if, como arreglo mi query?

Ni uno ni otro.
Código MySQL:
Ver original
  1. UPDATE pagos SET baja = IF(CONCEPTO = 'ENERO' AND FECHA_SALDADA < DATE_FORMAT(FECHA_SALDADA, '2013-%m-%d'), 1, 2)

En el WHER se puede indicar si esta operación abarcará todos o sólo algunos registros...
__________________
¿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 05/11/2012, 07:05
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: Crear un update dentro de un if, como arreglo mi query?

Eso se puede hacer también como yo he dicho, con dos UPDATES

Código SQL:
Ver original
  1. UPDATE pagos SET baja = 1
  2. WHERE CONCEPTO = 'ENERO'
  3. AND FECHA_SALDADA < DATE_FORMAT(FECHA_SALDADA, '2013-%m-%d')
  4.  
  5. UPDATE pagos SET baja = 2
  6. WHERE CONCEPTO <> 'ENERO'
  7. OR FECHA_SALDADA >= DATE_FORMAT(FECHA_SALDADA, '2013-%m-%d')
  #5 (permalink)  
Antiguo 05/11/2012, 07:18
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: Crear un update dentro de un if, como arreglo mi query?

2 UPDATES = 2 llamadas a la tabla.
2 llamadas a la tabla = 2 accesos a disco (mínimo)
2 Accesos a disco donde se puede hacer uno... es menor performance.

No es que no se pueda, pero cuando quieres optimizar algo, lo que debes evitar son las llamadas a acceso de disco innecesarias. Mientras menos accesos se tenga, tanto menos overhead se produce en el sistema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 05/11/2012, 07:25
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: Crear un update dentro de un if, como arreglo mi query?

Yo no he dicho que sea lo óptimo. El ha preguntado cómo se puede hacer, y yo le dí dos formas de hacerlo
  #7 (permalink)  
Antiguo 05/11/2012, 15:25
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 13 años, 5 meses
Puntos: 9
Respuesta: Crear un update dentro de un if, como arreglo mi query?

Perfecto muchas gracias a ambos!!! voy a realizar la prueba hoy y les comento!!!

Etiquetas: update
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 05:34.