Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-07-2012
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
intercambiar registros

Buenas,
escribía para presentarles la siguiente situación: tengo una tabla de x campos y a dos campos de ellos -campo1 y campo2- les tengo que intercambiar la información, es decir, que para un x caso el contenido de campo1 tiene que ir al campo2 y viceversa. Intento hacer algo como lo siguiente pero no me deja:
UPDATE table SET campo1='xxxxx', campo2='yyyyy' WHERE campo1='yyyyy' AND campo2='xxxxx'
directamente me sale que no se prodijeron cambios por la consulta.
Gracias, espero una mano.
Saludos!
Responder Con Cita
  #2  
Antiguo 19-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Pancholp1986 Ver Mensaje
Intento hacer algo como lo siguiente pero no me deja:
Código SQL [-]
UPDATE table SET campo1='xxxxx', campo2='yyyyy' WHERE campo1='yyyyy' AND campo2='xxxxx'
directamente me sale que no se prodijeron cambios por la consulta.
Recuerda poner los tags al código fuente, ejemplo:





¿Y el mensaje que sale es ese?: "no se prodijeron cambios por la consulta".
Qué tal si nos copia y pega exactamente el mensaje
Responder Con Cita
  #3  
Antiguo 19-07-2012
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
El mensaje al finalizar la consulta es el siguiente: 0 fila(s) fueron afectadas.
Responder Con Cita
  #4  
Antiguo 19-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues entonces es que no hay ninguno que cumpla con la condición que has puesto después del "where".
Responder Con Cita
  #5  
Antiguo 19-07-2012
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pues entonces es que no hay ninguno que cumpla con la condición que has puesto después del "where".
Si los hay, los estoy viendo.
Responder Con Cita
  #6  
Antiguo 19-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Imposible, revísalo bien
Responder Con Cita
  #7  
Antiguo 19-07-2012
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Imposible, revísalo bien
Casimiro los revise bien, trimeé (trim(campo)) los campos por si habia errores de blancos y varias veces, y la consulta sigue sin efecto.
Puede ser que sobre un mismo registro no se pueda realizar esa consulta? el intercambiar datos entre ella misma?
Sinceramente me parecia algo sencillo de hacer pero me esta volando la cabeza jeje.
Responder Con Cita
  #8  
Antiguo 19-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí que se puede hacer. No se me ocurre nada para que no puedas hacerlo.
¿Estás conectado realmente a la BD que estás actualizando?, a ver si estás mirando una y actualizando otra.
Responder Con Cita
  #9  
Antiguo 19-07-2012
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Sí que se puede hacer. No se me ocurre nada para que no puedas hacerlo.
¿Estás conectado realmente a la BD que estás actualizando?, a ver si estás mirando una y actualizando otra.
Si, estoy en la base correcta y conectado. Estube leyendo que no se puede hacer, dan un par de ideas de hacerlo con variables temporales para el intercambio de datos.
Trato de armar la consulta y la posteo cuando la tenga. Trate lo siguiente tambien y no me funciona tampoco, no me afecta ninguna fila ... clone la tabla1 a tabla2 y hago lo siguiente
Código SQL [-]
UPDATE tabla1 a, tabla2 b 
SET a.entre1 = 'xxxx', a.entre2 = 'yyyy'
WHERE a.id = b.id AND b.entre1 = 'yyyy' AND b.entre2 = 'xxxx'
Responder Con Cita
  #10  
Antiguo 19-07-2012
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
Me voy a pegar una ducha y vuelvo, a ver si se refresca el cerebro un poco ....
Responder Con Cita
  #11  
Antiguo 19-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Pancholp1986 Ver Mensaje
Estube leyendo que no se puede hacer, dan un par de ideas de hacerlo con variables temporales para el intercambio de datos.
Pues yo acabo de probarlo y no hay ningún problema:

Código SQL [-]
update tbEjemplo3 set nombre='manolo', telefono=123456 where nombre='pedro' and telefono=626262

Perfecto, sin problemas.
Responder Con Cita
  #12  
Antiguo 19-07-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Pancholp1986 Ver Mensaje
[...] trimeé (trim(campo)) los campos [...]
Con eso se me atragantó la tostada.

Ya en serio, ¿será una limitación de MySQL?
Responder Con Cita
  #13  
Antiguo 19-07-2012
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pues yo acabo de probarlo y no hay ningún problema:

Código SQL [-]
update tbEjemplo3 set nombre='manolo', telefono=123456 where nombre='pedro' and telefono=626262

Perfecto, sin problemas.
Tenés toda la razón, también cree una tabla de prueba para comprobarlo y no hay problemas ... no se por que con la otra no anda ... PERO ES ALEVOSO!!!!!!
Es algo del WHERE ... cuando voy a la solapa de "Buscar" busco los registros con campo1 LIKE 'XXXX' y anda bárbaro, ahora cuando le agrego campo2 LIKE 'yyyy' me devuelvo vacío ... y tengo fácil 800 registros que complen eso ... En mas, el problema es el campo2, busco registros que me cumplan una x condición ( existen los registros obviamente ), y no me encuentra nada, me sale el siguiente mensaje: "MySQL ha devuelto un valor vacío (i.e., cero columnas)."
me fui a bañar y vengo! gracias!
Responder Con Cita
  #14  
Antiguo 19-07-2012
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
Solucionado, bah ... emparchado!

UPDATE tabla SET campo1 = 'xxxx', campo2 = 'yyyy' WHERE campo1 LIKE 'yyyy%' AND campo2 LIKE 'xxxx%'

Todavía no entiendo por que no me anda con = estricto ...
Gracias!
Responder Con Cita
  #15  
Antiguo 19-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Pancholp1986 Ver Mensaje
Solucionado, bah ... emparchado!
UPDATE tabla SET campo1 = 'xxxx', campo2 = 'yyyy' WHERE campo1 LIKE 'yyyy%' AND campo2 LIKE 'xxxx%'
Todavía no entiendo por que no me anda con = estricto ...
Gracias!

Recuerda poner los tags al código, tal y como te expliqué antes, gracias.


Te funciona de esa manera porque tiene caracteres al final, está claro.
Responder Con Cita
  #16  
Antiguo 19-07-2012
Pancholp1986 Pancholp1986 is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
Pancholp1986 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Recuerda poner los tags al código, tal y como te expliqué antes, gracias.


Te funciona de esa manera porque tiene caracteres al final, está claro.
Exactamente, importe desde un csv y me dejo el '\r' al final de cada campo.
Responder Con Cita
  #17  
Antiguo 19-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Pancholp1986 Ver Mensaje
Exactamente, importe desde un csv y me dejo el '\r' al final de cada campo.
Ese era el culpable
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como intercambiar filas de un DBGrid micky mouse Varios 4 11-06-2008 16:10:25
Arreglo de Registros, con arreglos de Registros(Dinamico) PiornoCKA&G Varios 4 05-01-2007 08:53:30
Intercambiar información entre bases de datos por Internet ¿TCP o FTP? Ariel Pérez Internet 2 15-09-2006 08:28:35
Intercambiar XML´s a través de una pág. ASP bataola Internet 0 13-09-2006 16:30:01
por que duplicidad de registros con clientdataset sin ingresar registros ...mysql Arturo MySQL 3 05-09-2006 18:39:37


La franja horaria es GMT +2. Ahora son las 09:43:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi