Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   intercambiar registros (https://www.clubdelphi.com/foros/showthread.php?t=79586)

Pancholp1986 19-07-2012 00:13:37

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!

Casimiro Notevi 19-07-2012 00:28:54

Cita:

Empezado por Pancholp1986 (Mensaje 437729)
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 ;)

Pancholp1986 19-07-2012 00:30:44

El mensaje al finalizar la consulta es el siguiente: 0 fila(s) fueron afectadas.

Casimiro Notevi 19-07-2012 00:32:18

Pues entonces es que no hay ninguno que cumpla con la condición que has puesto después del "where".

Pancholp1986 19-07-2012 00:33:22

Cita:

Empezado por Casimiro Notevi (Mensaje 437733)
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. :D

Casimiro Notevi 19-07-2012 00:35:14

Imposible, revísalo bien :)

Pancholp1986 19-07-2012 00:38:45

Cita:

Empezado por Casimiro Notevi (Mensaje 437736)
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.

Casimiro Notevi 19-07-2012 00:54:03

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.

Pancholp1986 19-07-2012 01:03:09

Cita:

Empezado por Casimiro Notevi (Mensaje 437739)
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'

Pancholp1986 19-07-2012 01:12:00

Me voy a pegar una ducha y vuelvo, a ver si se refresca el cerebro un poco ....

Casimiro Notevi 19-07-2012 01:39:12

Cita:

Empezado por Pancholp1986 (Mensaje 437740)
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.

Al González 19-07-2012 01:42:17

Cita:

Empezado por Pancholp1986 (Mensaje 437737)
[...] trimeé (trim(campo)) los campos [...]

Con eso se me atragantó la tostada. :eek:

Ya en serio, ¿será una limitación de MySQL?

Pancholp1986 19-07-2012 02:03:15

Cita:

Empezado por Casimiro Notevi (Mensaje 437742)
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!

Pancholp1986 19-07-2012 04:46:47

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!

Casimiro Notevi 19-07-2012 07:23:38

Cita:

Empezado por Pancholp1986 (Mensaje 437747)
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.

Pancholp1986 19-07-2012 20:06:11

Cita:

Empezado por Casimiro Notevi (Mensaje 437749)
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.

Casimiro Notevi 19-07-2012 20:27:45

Cita:

Empezado por Pancholp1986 (Mensaje 437786)
Exactamente, importe desde un csv y me dejo el '\r' al final de cada campo.

Ese era el culpable :)


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

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