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

UPDATE multitudinario. Traspaso de SELECT. ayuda!

Estas en el tema de UPDATE multitudinario. Traspaso de SELECT. ayuda! en el foro de Mysql en Foros del Web. Hola chicos. No es que sea vaga... pero tengo una sentencia INSERT enorme y horrible y quisiera saber si moficandola podría hacer un UPDATE de ...
  #1 (permalink)  
Antiguo 12/03/2008, 12:22
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Exclamación UPDATE multitudinario. Traspaso de SELECT. ayuda!

Hola chicos. No es que sea vaga... pero tengo una sentencia INSERT enorme y horrible y quisiera saber si moficandola podría hacer un UPDATE de los mismos datos.

He llegado a un punto pero como en todas las guías dice de valor en valor pepito=valor, juanito=valor

no se si sirve hacer algo parecido a esto y aprovechar lo que ya tengo hecho.

Con el original:
Código PHP:
mysql_query("INSERT INTO alojamientos(n_turismo,nombre,direccion,plazas,tipo,tipo_alq,descripcion,mini_desc,actividades,lugares,tarifas,animales,piscina,accesible,barb,des,com,cen,cal,air,ter,tvsal,tvhab,hidba,hiddu,chi,cdrom,dvd,bar,jar,rest,spa,cun,adsl,park,carac_comentarios,nombre_contacto,telf_contacto,email_contacto)
        VALUES ('$num','$nom','$direcc','$pla','$tip','$tipo_alq','$desc','$mini_desc','$act','$lug','$tar','$anim','$pisc','$acces','$barb','$des','$com','$cen','$cal','$air','$ter','$tvsal','$tvhab','$hidba','$hiddu','$chi','$cdrom','$dvd','$bar','$jar','$rest','$spa','$cun','$adsl','$park','$carac_coment','$nombre_contacto','$telf_contacto','$email_contacto')"
); 

Código PHP:
mysql_query("UPDATE alojamientos SET n_turismo,nombre,direccion,plazas,tipo,tipo_alq,descripcion,mini_desc,actividades,lugares,tarifas,animales,piscina,accesible,barb,des,com,cen,cal,air,ter,tvsal,tvhab,hidba,hiddu,chi,cdrom,dvd,bar,jar,rest,spa,cun,adsl,park,carac_comentarios,nombre_contacto,telf_contacto,email_contacto)
        VALUES ('$num','$nom','$direcc','$pla','$tip','$tipo_alq','$desc','$mini_desc','$act','$lug','$tar','$anim','$pisc','$acces','$barb','$des','$com','$cen','$cal','$air','$ter','$tvsal','$tvhab','$hidba','$hiddu','$chi','$cdrom','$dvd','$bar','$jar','$rest','$spa','$cun','$adsl','$park','$carac_coment','$nombre_contacto','$telf_contacto','$email_contacto')"
); 
Pero no se qué mas modificar... me horririzo al tener que hacer esa lista enorme cambiarla como dicen los manuales. Tiene que haber alguna forma!


gracias
__________________
Darkgaze
  #2 (permalink)  
Antiguo 12/03/2008, 14: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, 5 meses
Puntos: 2658
Re: UPDATE multitudinario. Traspaso de SELECT. ayuda!

Vamos por partes:

1. La sentencia UPDATE tiene esa única sintaxis, porque respeta el modelo del ANSI SQL.

2. Si lo que quieres evitar es hacer una inmensamente larga sentencia UPDATE, pero quieres que los valores ingresen o se actualicen, mi sugerencia es que uses la sentencia REPLACE, propia de MySQL y que no sigue el modelo ANSI, que tiene la misma sintaxis que INSERT. Cuidado: Si el registro existe reemplazará todos los valores por el que están introduciendo, por lo que hay que hacer validaciones previas.

3. Por lo que observo, uno de los problemas que tiene tu modelo es una inmensa desnormalización de la tabla que quieres actualizar. ¿Es intencional o simplemente te salió así? Por lo que se alcanza a ver, la información de esa sola tabla alcanza para componer al menos seis tablas distintas, con la información un poco mas regularizada y sin tanta redundancia.
  #3 (permalink)  
Antiguo 12/03/2008, 14:49
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Re: UPDATE multitudinario. Traspaso de SELECT. ayuda!

Es que el registro EXISTE. lo que estoy haciendo es modificando los datos del mismo. OPr eso hago un UPDATE.

Bueno. la tabla es así porque ha ido creciendo, pero no son demasiados datos. No había otra forma. No tienen relacion unos con otros. Pero gracias por el interés.
__________________
Darkgaze
  #4 (permalink)  
Antiguo 12/03/2008, 14:53
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: UPDATE multitudinario. Traspaso de SELECT. ayuda!

Si levantas el registro antes de reemplazarlo, y actualizas los campos en PHP, al mandar el REPLACE mantendrías los datos de los campos no modificados y se actualizarían los nuevos.
Me parece que es tu mejor opción.
Obviamente eso implica que antes de hacer un REPLACE tienes que levantar el registro entero y volver a ponerlo competo... todos los campos.
Me sigue pareciendo la mejor opción, además de ser mucho más rápida que cualquier UPDATE.
Si son muchos registro a modificar, siempre puedes hacer un loop.
  #5 (permalink)  
Antiguo 13/03/2008, 05:48
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Re: UPDATE multitudinario. Traspaso de SELECT. ayuda!

a que le llamas levantar??

borrar?
__________________
Darkgaze
  #6 (permalink)  
Antiguo 13/03/2008, 07:41
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: UPDATE multitudinario. Traspaso de SELECT. ayuda!

Leer el registro que querés modificar de la base. Es un sentido figurado ("levantar" del disco por leer, y "bajar" al disco por escribir).
  #7 (permalink)  
Antiguo 13/03/2008, 10:48
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Re: UPDATE multitudinario. Traspaso de SELECT. ayuda!

OK. entonces es lo que estoy haciendo.

lo que hago es cargar TODOS los datos de esa fila en un formulario y el usuario cambia lo que quiere. Luego vuelve a enviar el formulario y acutaliza TODOS los campos, hayan sido cambiados o no.


entonces me mola eso de quitar yp oner. Pero como hago eso?. Como sustituyo?. Con replace, dices?
__________________
Darkgaze
  #8 (permalink)  
Antiguo 13/03/2008, 11:14
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: UPDATE multitudinario. Traspaso de SELECT. ayuda!

Cambia "INSERT" por "REPLACE" y se acabó el dilema. El resto de la sentencia permanece igual.
Mira esto: 13.2.6. Sintaxis de REPLACE
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 07:53.