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

Modificar valor de campo según campo calculado

Estas en el tema de Modificar valor de campo según campo calculado en el foro de Mysql en Foros del Web. Buen día... Recurro a ustedes porque mis conocimientos en MySQL son casi nulos y se me presentó un problemita que no sé como resolver.... Pido ...
  #1 (permalink)  
Antiguo 23/05/2012, 15:54
 
Fecha de Ingreso: mayo-2012
Mensajes: 2
Antigüedad: 11 años, 11 meses
Puntos: 0
Modificar valor de campo según campo calculado

Buen día...

Recurro a ustedes porque mis conocimientos en MySQL son casi nulos y se me presentó un problemita que no sé como resolver.... Pido disculpas si esta duda ya ha sido solucionada en otro tema, pero luego de buscar por un buen tiempo no hallé nada....


El problema es que tengo una tabla digamos que con varios campos


CAMPO 1 ---- CAMPO 2 ----- CAMPO 3 ----

El campo 1 tiene como valor 1 ó 0
El campo 2 y el campo 3 son campos numéricos...

Lo que quiero hacer es que si el resultado de la división del campo 2 dentro del campo 3 me da menos que un número determinado, digamos 5, el campo 1 tenga como valor 0 y si da más de 3 tenga como valor 1

Me gustaría actualizar el campo a través de una consulta....
  #2 (permalink)  
Antiguo 23/05/2012, 16:39
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Modificar valor de campo según campo calculado

Hola Paranco, prueba asi:

UPDATE MiTabla SET Campo1 = IF(campo2/campo3>=5,1,0);

Saludos.
  #3 (permalink)  
Antiguo 23/05/2012, 16:41
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Modificar valor de campo según campo calculado

Primero una pregunta ¿para qué almacenar un campo calculado? Imagina que cambias un vaalor de los otros campos. Cada vez que lo hagas tendrás que lo hagas tendrás que actualizar el valor.
ahora, una petición: Acláranos qué haces luego con el valor de ese valor del campo1.
y para acabar, otra cuestión: ¿Y qué pasa si el valor de la división no se corresponde con los dos que esperas...?
  #4 (permalink)  
Antiguo 24/05/2012, 06:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Modificar valor de campo según campo calculado

Yo diria mas... para que quieres el campo1 si puedes hacer

SELECT * FROM tutabla WHERE campo2/campo3<5;

y te dará los registros que deberian tener 1 en el campo1 y

SELECT * FROM tutabla WHERE campo2/campo3>3;

los otros....

Ojo que con estas restriciones tienes registros coincidentes en las dos consultas.... en este caso no podrias solucionarlo con el campo1....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 24/05/2012, 09:42
 
Fecha de Ingreso: mayo-2012
Mensajes: 2
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Modificar valor de campo según campo calculado

Cita:
Iniciado por falegria230349 Ver Mensaje
Hola Paranco, prueba asi:

UPDATE MiTabla SET Campo1 = IF(campo2/campo3>=5,1,0);

Saludos.
Probaré así y te cuento, gracias.

Cita:
Iniciado por jurena Ver Mensaje
Primero una pregunta ¿para qué almacenar un campo calculado? Imagina que cambias un vaalor de los otros campos. Cada vez que lo hagas tendrás que lo hagas tendrás que actualizar el valor.

El campo calculado no lo quiero almacenar. Lo único que quiero es hacer una consulta manual y poder cambiar cada vez que la ejecute, el valor del campo 1 dependiendo del resultado de la división del campo 2 y del campo 3...

Cita:
Iniciado por jurena Ver Mensaje
Acláranos qué haces luego con el valor de ese valor del campo1.
y para acabar, otra cuestión: ¿Y qué pasa si el valor de la división no se corresponde con los dos que esperas...?
El valor del campo 1 restringe permisos de acceso a una sección de una página web... Los usuarios, si tiene 1 pueden acceder, si tienen 0 no pueden... Entonces, lo que quiero hacer es que según lo que me resulte de la división del campo 2 y el campo 3, cambiar ese valor a 1 ó a 0 y quitar o dar permiso de acceso.

Lo hacía manualmente, pero dejó de ser práctico cuando llegué a más de 25,000 registros


Cita:
Iniciado por quimfv Ver Mensaje
Yo diria mas... para que quieres el campo1 si puedes hacer

SELECT * FROM tutabla WHERE campo2/campo3<5;

y te dará los registros que deberian tener 1 en el campo1 y

SELECT * FROM tutabla WHERE campo2/campo3>3;

los otros....

Ojo que con estas restriciones tienes registros coincidentes en las dos consultas.... en este caso no podrias solucionarlo con el campo1....

Lo registros que deberían tener ya sea 1 o 2 en el CAMPO 1 los veo haciendo esta consulta:

SELECT campo 2, campo 3, campo 2/campo 3
FROM Mi tabla

Y de salida obtengo el campo calculado sin almacenarlo....

Pero luego no sé como cambiar el valor del Campo 1 de los registros que me arrojen en el campo calculado más de 3 a 1 y los que me arrojen menos de 3, a 0 :(

Última edición por Paranco; 24/05/2012 a las 09:56
  #6 (permalink)  
Antiguo 25/05/2012, 00:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Modificar valor de campo según campo calculado


Si en dos consultas consigues lo que quieres


Registros mas de tres
SELECT * FROM tutabla WHERE campo2/campo3>3;
Registros menos de tres
SELECT * FROM tutabla WHERE campo2/campo3<3;

para que vas a hacer tres consultas

UPDATE tutabla SET campo1 = IF(campo2/campo3>3,1,0);
//El campo 1 sera 1 si se cumple campo2/campo3>3 y 0 si no se cumple
SELECT * FROM tutabla WHERE campo1=1;
SELECT * FROM tutabla WHERE campo1=0;

para conseguir lo mismo??????

Cita:
El valor del campo 1 restringe permisos de acceso a una sección de una página web...
Cualquier restricción que puedas implementar sobre el valor del campo 1 la puedes implementar sobre el resultado de campo2/campo3 y será exactamente lo mismo.

Cualquier cosa antes de almacenar ese campo1. El calculo puedes "encargarselo" al servidor de bbdd

Código MySQL:
Ver original
  1. SELECT  campo2, campo3, IF(campo2/campo3>3,1,0) as campo1 FROM tutabla

o a la programacion que va a usar ese valor.....

Código MySQL:
Ver original
  1. SELECT  campo2, campo3 FROM tutabla
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 25/05/2012 a las 01:01

Etiquetas: modificar, sql, tabla, campos, calculadora
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 00:31.