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

Una sola ocurrencia de cierto valor en una tabla

Estas en el tema de Una sola ocurrencia de cierto valor en una tabla en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/01/2006, 16:39
Avatar de 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
  #2 (permalink)  
Antiguo 15/01/2006, 16:23
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
update (tabla) set bandera='SI' where registro=(numero)
update (tabla) set bandera='NO' where registro<>(numero)
__________________
No tengo firma ahora... :(
  #3 (permalink)  
Antiguo 15/01/2006, 16:29
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Gracias por tu respuesta, Mickel pero, ¿No son esas dos consultas?
Parece que terminaré haciéndolo así, jeje.
Saludos.
  #4 (permalink)  
Antiguo 16/01/2006, 16:10
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
UPDATE tabla
SET bandera = IF(registro=numero, 'Si', 'No')

Ando oxidado en MySQL, pero según yo, algo como eso debe funcionar
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 12:34.