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

No consigo hacer funcionar una consulta

Estas en el tema de No consigo hacer funcionar una consulta en el foro de Mysql en Foros del Web. Hola a todos. A ver os cuento mi problema. El tema es que quiero cambiar el userid de una tabla (A) por el userid de ...
  #1 (permalink)  
Antiguo 06/05/2011, 02:54
 
Fecha de Ingreso: febrero-2011
Mensajes: 8
Antigüedad: 13 años, 2 meses
Puntos: 0
No consigo hacer funcionar una consulta

Hola a todos.

A ver os cuento mi problema. El tema es que quiero cambiar el userid de una tabla (A) por el userid de otra tabla (B) cuando se cumple la condición de que username de la tabla(A)=username de la tabla(B).

Esto es como debería quedar, o creo que lo debería hacer, pero me da error.
Cita:
UPDATE erdm_post SET userid = erdm_user.userid WHERE erdm_post.username = erdm_user.username
He probado metiendole comillas simples, paréntesis... pero no hay manera. Mis conocimientos de mysql son prácticamente nulos, por eso os pido ayuda, ya que llevo 2 días con lo mismo y no doy con la clave.

Muchas gracias.
  #2 (permalink)  
Antiguo 06/05/2011, 03:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: No consigo hacer funcionar una consulta

Código MySQL:
Ver original
  1. UPDATE erdm_post INNER JOIN erdm_user
  2. ON erdm_post.username=erdm_user.username
  3. SET erdm_post.userid = erdm_user.username;

Si el erdm_post.userid es autoincremental te puede dar problemas.

Y en general cuidado con cambiar identificadores...

No puedes conseguir el userid correcto antes de guardar el post?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 06/05/2011, 09:28
 
Fecha de Ingreso: febrero-2011
Mensajes: 8
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: No consigo hacer funcionar una consulta

Hola, lo primero muchas gracias por contestar.

Te comento, el asunto es que he unificado varios foros para que utilicen la misma tabla de users, así son independientes pero todos comparten los usuarios.
He cogido una tabla que era la que más users tenía y las otras 2 las he añadido. Lo que he hecho a sido coger el valor del último userid de la tabla grande y sumárselo a las otras 2 tablas, luego he filtrado los que estaban repetido y las he unido.

Ahora todo funciona perfectamente, excepto en los temas que ya están en los foros que al cambiar el userid pues aparece como si los hubiese escrito otra persona.

Bueno voy a probar como dices, y si no funciona me tendré que resignar y hacerlo a mano.


Mercy.

EDITO. YA lo he probado pero me pone el userid a 0
  #4 (permalink)  
Antiguo 06/05/2011, 10:06
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: No consigo hacer funcionar una consulta

La consulta que haces no puedes utilizar erdm_user.userid porque el analizador de la consulta no sabe a que fila de la tabla erdm_user te estás refiriendo. Para eso puedes utilizar FROM.

Puedes tener problemas con las claves primarias así que tendrías que desactivar temporalmente la integridad referencial.


Código MySQL:
Ver original
  1. UPDATE erdm_post
  2. SET userid = erdm_user.userid
  3. FROM erdm_user
  4. WHERE erdm_post.username = erdm_user.username
  #5 (permalink)  
Antiguo 06/05/2011, 11:30
 
Fecha de Ingreso: febrero-2011
Mensajes: 8
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: No consigo hacer funcionar una consulta

Perfecto, muchísimas gracias. El lunes con tiempo lo pruebo.

Un saludo.

Hola, lo he probado y me devuelve esto...
Cita:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM erdm_user WHERE erdm_post.username = erdm_user.username' at line 3
Como desactivo temporalmente la integridad referencial?

Gracias.

Última edición por fermin001; 07/05/2011 a las 03:13
  #6 (permalink)  
Antiguo 10/05/2011, 01:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: No consigo hacer funcionar una consulta

Código MySQL:
Ver original
  1. UPDATE erdm_post INNER JOIN erdm_user
  2. ON erdm_post.username=erdm_user.username
  3. SET erdm_post.userid = erdm_user.userid;

Perdón era así.

Pero como te han dicho puedes tener problemas con las PK. No se si la mejor solución es desactivar la integridad referencial, puesto que te puede quedar la bbdd incoherente.

Insito en que seria mejor obtener primero el id correcto y guardar directamente con este en erdm_post.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 10/05/2011, 02:14
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: No consigo hacer funcionar una consulta

Sí, es que me equivoque de base de datos.
En PostgreSQL es como te dije pero en MySQL no se puede utilizar el FROM.

Código MySQL:
Ver original
  1. UPDATE erdm_post, erdm_user
  2. SET userid = erdm_user.userid
  3. WHERE erdm_post.username = erdm_user.username


También está muy bien como te ha dicho quimfv
  #8 (permalink)  
Antiguo 11/05/2011, 05:21
 
Fecha de Ingreso: febrero-2011
Mensajes: 8
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: No consigo hacer funcionar una consulta

Muchísimas gracias a los 2 por el interés. Al final me funcionó lo primero que probé, que fue lo de quimfv.

MUCHAS GRACIASSSSSSSS.

Etiquetas: Ninguno
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 06:02.