Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/01/2006, 16:39
Avatar de Escoffie
Escoffie
 
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Una sola ocurrencia de cierto valor en una tabla

Hola foreros:

Tengo una tabla con un campo que uso como bandera que sólo admite SI o NO.
¿Existe alguna consulta que me permita tener un solo SI entre todos los registros?
Es decir, partiendo del caso en que el registro 234 sea bandera='SI' y el 432 sea bandera='NO' (todos los demás son NO también) necesito que al actualizar el registro 432 para que sea bandera='SI', automáticamente 234 se "resetee" a bandera='NO'.
Se me ocurren varias formas de resolverlo usando varias consultas y muchos if else en PHP, pero sólo por salir de la duda y para hacer las cosas del mejor modo posible, pensé que talvez exista alguna forma de plantear la consulta que me permita hacerlo en un solo paso.
Espero haberme explicado.

El algoritmo sería este:

Dado un formulario de actualización de un registro:

- Si el usuario no modifica el valor de 'bandera' no hace nada con el valor de 'bandera', aunque puede actualizar los demás campos.
- Si el usuario modifica el valor de 'NO' a 'SI':
--- Si no existe otro 'SI', cambiar el valor del registro en cuestión a 'SI'
--- Si existe otro 'SI', resetearlo a 'NO' y entonces hacer que el registro en cuestión tenga bandera='SI'

Insisto, se me ocurren muchas formas de resolverlo con varias consultas, pero talvez exista algo en MySQL que permita hacer esto en un solo paso, talvez sea una cuestión de lógica y de cómo construir el query, es decir, que sea más un tip o un truquito que una herramienta en sí del SQL.

Por si tiene que ver, estoy usando MySQL 4.0.24 con PHP 4.3

Muchas gracias por su ayuda