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

ayuda con UPDATE masivos

Estas en el tema de ayuda con UPDATE masivos en el foro de Mysql en Foros del Web. Hola. No me sale como hacer un update masivo de lo siguiente: Tengo esta tabla TABLA USERS id_user (PRIMARY KEY) user (VARCHAR) order (INTEGER, UNIQUE) ...
  #1 (permalink)  
Antiguo 21/04/2008, 09:56
Avatar de faiverson  
Fecha de Ingreso: mayo-2005
Mensajes: 79
Antigüedad: 18 años, 11 meses
Puntos: 0
ayuda con UPDATE masivos

Hola. No me sale como hacer un update masivo de lo siguiente:

Tengo esta tabla
TABLA USERS
id_user (PRIMARY KEY)
user (VARCHAR)
order (INTEGER, UNIQUE)

Cuando se crea un nuevo user, puedo elegir cualquier numero ya escrito como order:
ej. tengo
user order 1
user order 2
user order n=20

quiero ingresar otro user con order=15, es decir que tendria que cambiar los users que se encuentren entre 15 y n(20). Es decir, el user que tenia order 15, tengo que actulizarlo a 16, el de 16 lo tengo que actualizar a 17, y asi sucesivamente.
Lo que hago es ir cambiando con un UPDATE uno por uno.

Se puede hacer un UPDATE masivo?
Existe algo asi como un puntero en MySQL?
__________________
Fabi... fighting versus the web
  #2 (permalink)  
Antiguo 21/04/2008, 10:10
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, 5 meses
Puntos: 2658
Re: ayuda con UPDATE masivos

Si el campo user no se repite nunca, elimina el USER_ID y define el USER como PK, aunque no sea incremental. De esa forma dejarías al MySQL que resuelva el problema del ordenamiento.

En ese contexto, tanto ORDER como USER_ID puede que sean innecesarios (¿para qué creas un campo ORDER? ¿Qué guarda?)
  #3 (permalink)  
Antiguo 21/04/2008, 10:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Re: ayuda con UPDATE masivos

Cita:
Iniciado por faiverson Ver Mensaje
Hola. No me sale como hacer un update masivo de lo siguiente:

Tengo esta tabla
TABLA USERS
id_user (PRIMARY KEY)
user (VARCHAR)
order (INTEGER, UNIQUE)

Cuando se crea un nuevo user, puedo elegir cualquier numero ya escrito como order:
ej. tengo
user order 1
user order 2
user order n=20

quiero ingresar otro user con order=15, es decir que tendria que cambiar los users que se encuentren entre 15 y n(20). Es decir, el user que tenia order 15, tengo que actulizarlo a 16, el de 16 lo tengo que actualizar a 17, y asi sucesivamente.
Lo que hago es ir cambiando con un UPDATE uno por uno.

Se puede hacer un UPDATE masivo?
Existe algo asi como un puntero en MySQL?
Se me ocurre que si quitas temporalmente el índice puedes hacerlo. Los pasos serían:
1) ALTER TABLE tabla DROP INDEX user_order // quitas el índice
2) UPDATE tabla SET user_order = user_order + 1 WHERE user_order > 14 //actualizas todos los registros sumándole uno desde el que quieres
3) INSER INTO tabla (user_order) values (15) //insertas el valor que deseas
4) ALTER TABLE `tabla` ADD UNIQUE (
`user_order`
) //vuelves a añadir el índice único
  #4 (permalink)  
Antiguo 21/04/2008, 17:54
Avatar de faiverson  
Fecha de Ingreso: mayo-2005
Mensajes: 79
Antigüedad: 18 años, 11 meses
Puntos: 0
Re: ayuda con UPDATE masivos

Gracias por responder...

El contenido de las tablas es correcto. Utilizo el campo order, para mostrar por pantalla un listado ordenandolo a placer del usuario. Entonces mediante ese orden el usuario puede acomodar las noticias como el desee.
Creo que la solucion a mi problema viene por aca:
UPDATE tabla SET user_order = user_order + 1 WHERE user_order > 14

Voy a probar eso mañana. En realidad no sabia que mySQL reconocia algo como
user_order + 1, que era lo que me estaba complicando!
Gracias!
__________________
Fabi... fighting versus the web
  #5 (permalink)  
Antiguo 22/04/2008, 05:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: ayuda con UPDATE masivos

Si esa es la solución pero cuidado, como te han dicho, con el indice unique que tienes en order...

Si haces el update por orden inverso (descendiente) no hara falta que anules el indice....

UPDATE tabla SET user_order = user_order + 1 WHERE user_order > 14 ORDER BY user_order DESC;

Creo?!

Quim

Última edición por quimfv; 22/04/2008 a las 06:52
  #6 (permalink)  
Antiguo 22/04/2008, 07:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Re: ayuda con UPDATE masivos

Llevas razón, Quimfv,
funciona como dices: si utilizas un ORDER BY nombrecampo DESC para el UPDATE, no es necesario borrar el índice...
  #7 (permalink)  
Antiguo 22/04/2008, 08:46
Avatar de faiverson  
Fecha de Ingreso: mayo-2005
Mensajes: 79
Antigüedad: 18 años, 11 meses
Puntos: 0
Re: ayuda con UPDATE masivos

Muchas gracias! Tema resuelto!
__________________
Fabi... fighting versus the web
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:04.