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

[SOLUCIONADO] UPDATE basado en consulta de dos tablas

Estas en el tema de UPDATE basado en consulta de dos tablas en el foro de Mysql en Foros del Web. Hola amigos! recurro a los foros, para preguntar como hacer una consulta más o menos basada en la siguiente: Código: SELECT * FROM usuarios u ...
  #1 (permalink)  
Antiguo 01/07/2015, 11:24
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años
Puntos: 11
Información UPDATE basado en consulta de dos tablas

Hola amigos! recurro a los foros, para preguntar como hacer una consulta más o menos basada en la siguiente:
Código:
SELECT * FROM usuarios u inner join chat c WHERE u.id_rol = 2 AND TIMESTAMPDIFF(MINUTE, c.fecha, NOW()) > 30 OR c.fecha IS NULL GROUP BY u.id_usuario
Generalmente estoy haciendo un chat, el UPDATE que necesito basado en la consulta que estoy entregando inicialmente generalmente cambiará un campo en la tabla usuarios llamado estado a 0 si el tiempo que ha pasado desde la última entrega de un mensaje en la tabla chat es mayor a 30 minutos.

Algo así como lo siguiente, dejando claro que estoy loco, esto no funciona, es solo una aproximación a lo que realmente necesito... ps sé que un código para un programador vale más que mil palabras... basado en esa ideologia entrego algo más o menos de lo que deseo suponiendo que un update se pudiese lograr cambiando SELECT por UPDATE y listo ...

Código:
UPDATE usuarios SET estado = 1 u inner join chat c WHERE u.id_rol = 2 AND TIMESTAMPDIFF(MINUTE, c.fecha, NOW()) > 30 OR c.fecha IS NULL GROUP BY u.id_usuario
Agradezco de antemano cualquier respuesta... aunque sea una idea de como consultar las dos tablas y hacer un update a partir de esa consulta...
  #2 (permalink)  
Antiguo 01/07/2015, 11:52
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años
Puntos: 11
Respuesta: UPDATE basado en consulta de dos tablas

Ok, por si alguien le sirve en el futuro lo solucioné con esto:
Código:
UPDATE usuarios u inner join chat c on u.id_usuario = c.id_usuario_origen SET u.estado = 0 WHERE u.id_rol = 2 OR u.id_rol = 2 AND TIMESTAMPDIFF(MINUTE, c.fecha, NOW()) > 30 OR c.fecha IS NULL
Generalmente la sintaxis es así:
Código:
UPDATE tabla2 t1 INNER JOIN tabla2 t2 ON t1.campo_relativo = t2.campo_relativo SET t1.campo_edicion = "valor" WHERE t1.campo_para_comparar = "valor"
Éxitos!! creo que si era lo mismo, mi error estaba en que usaba el SET antes de hacer el inner join... éxitos!!!

Etiquetas: campo, fecha, select, tabla, tablas, update
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 02:40.