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

Replace si no se remplazo por otra consulta

Estas en el tema de Replace si no se remplazo por otra consulta en el foro de Mysql en Foros del Web. Hola, gracias a todos por leerme, Estoy haciendo una consulta en mysql para poder modificar los parametros de los autores repetidos que tengan el mismo ...
  #1 (permalink)  
Antiguo 26/10/2012, 04:46
 
Fecha de Ingreso: marzo-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Replace si no se remplazo por otra consulta

Hola, gracias a todos por leerme,
Estoy haciendo una consulta en mysql para poder modificar los parametros de los autores repetidos que tengan el mismo nombre, la consulta que hago es la siguiente.

Código MySQL:
Ver original
  1. update users set user = replace(user,'jose','pepe');
  2. update users set user = replace(user,'pepe','jose');

Lo que quiero es que cambie a los joses por pepes, y a los pepes por joses, pero lo que sucede realmente es que se queda igual, remplaza jose por pepe, pero la segunda consulta
me remplaza de nuevo pepe por jose, y si quito la segunda consulta no puedo cambiarle el nombre a los pepe.

He mirado la documentación de UPDATE y REPLACE y probado cosas que se parecian viables, pero no he conseguido nada.

¿Hay alguna manera de hacer la consulta diciendole a mysql que solo reemplace si una consulta anterior no lo ha remplazado anteriormente?
Se que se puede solucionar el problema con otra lógica mas decente, (asignandoles un +1, o consultando la id unica de ese user, etc) pero al margen de esto ya es curiosidad si hay manera de decir a mysql que solo reemplace un dato si anteriormente no fue remplazado.
Un saludo y gracias.

Última edición por gnzsoloyo; 26/10/2012 a las 06:49 Razón: Codigo no etiquetado.
  #2 (permalink)  
Antiguo 26/10/2012, 06:48
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, 3 meses
Puntos: 2658
Respuesta: Replace si no se remplazo por otra consulta

Tal vez algo como:
Código MySQL:
Ver original
  1. update users
  2.              set user = replace(IF(user = 'jose','pepe',IF(user = 'pepe', 'jose', '')));
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/10/2012, 10:23
 
Fecha de Ingreso: marzo-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Respuesta: Replace si no se remplazo por otra consulta

Hola,
Hablas de hacer todos los replace en la misma consulta supongo.
Es de los mas lógico, muchas gracias, aun no se mucho sobre Mysql y php y me falta mucha sintaxis.
Muy agradecido
  #4 (permalink)  
Antiguo 26/10/2012, 10: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, 3 meses
Puntos: 2658
Respuesta: Replace si no se remplazo por otra consulta

Es que un cambio del tipo que quieres es una operación de tres pasos y no de dos, porque el segundo cambio pisaría también los hechos en el primero, ya que quedan abarcados por la condición del WHERE.
No estoy muy seguro de que funcione, para mi deberías trabajar con tablas temporales.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/10/2012, 18:46
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, 3 meses
Puntos: 2658
Respuesta: Replace si no se remplazo por otra consulta

No. No va a funcionar en ese contexto, ni tampoco servirá el REPLACE en esa forma, porque reemplazará cualquier cadena o parte de ella, por lo que los resultados serían falsos.
La unica solución que veo es realizar un procedimiento sea en PL/SQL o en la aplicación que pueda realizar el reemplazo.
Hay que replantear la idea de nuevo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 28/10/2012, 01:23
 
Fecha de Ingreso: marzo-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Respuesta: Replace si no se remplazo por otra consulta

Gracias por tu interés, he ido comprobando todo lo que me comentas.
Por el lado de la aplicación me toco modificar C:\xampp\phpMyAdmin\libraries, y C:\xampp\phpMyAdmin\config.inc.php y el .ini para poder hacer la consulta ( hay tantos nombres que dura unos 22 minutos). Por eso omiti la aplicación, si hago los replaces con PHP es un colapso (al menos con mis conocimientos de servidor y PHP).
Respecto a procedimiento PL/SQL no lo conocia, he mirado sobre ello y parece que es como dices la solución, voy a ver si aprendo algo sobre eso y tiro por ahí porque parece que si funcionará al poder declarar excepciones.
Gracias otra vez.

Etiquetas: replace, sql
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 04:59.