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

Consulta de mensajes

Estas en el tema de Consulta de mensajes en el foro de Mysql en Foros del Web. Hola buenas, La tabla: id | to_id | from_id | message 1 4 1 .... 2 1 4 .... 3 4 1 .... 4 1 ...
  #1 (permalink)  
Antiguo 14/01/2013, 11:52
 
Fecha de Ingreso: diciembre-2012
Mensajes: 6
Antigüedad: 11 años, 4 meses
Puntos: 0
Consulta de mensajes

Hola buenas,

La tabla:

id | to_id | from_id | message
1 4 1 ....
2 1 4 ....
3 4 1 ....
4 1 4 ....
5 1 5 ....
6 1 6 ....

Las variables son: id(primary key), to_id(a quien va destinado),from_id(quien lo envia), message(mensaje)

Yo lo que quiero es hacer una consulta para que siempre salga el último registro (es decir, el último mensaje recibido/enviado a un usuario) del campo "message" de cada usuario que me envió un mensaje o yo le envié, y que se agrupe por usuario sin incluir el mío propio.

GRACIAS.
  #2 (permalink)  
Antiguo 14/01/2013, 12:31
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta de mensajes

Hola innerjoin:

Ok, me queda claro qué es lo que quieres obtener... lo que tengo duda es ¿cuál es el problema?

En tu post no estás mencionando qué es lo que intentaste hacer, y a partir de esto, si estás obteniendo un error o algo por el estilo.

Te recuerdo que el foro es para ayudarte a resolver DUDAS o problemas específicos, pero que de ninguna manera es para hacer el trabajo de otros.

Para la consulta que necesitas, dale un vistazo a la función MAX y a la cláusula GROUP BY... estas te servirán para obtener el máx id para cada usuario... La única consideración que debes tener es que como no sabes si es un mensaje enviado o recibido, Observa que el MAX(id) para el usuario 4, si consideras sólo la columna to_id, sería el mensaje id=3, pero si consideras la columna from_id, el max(id) sería el id=$... para evitar este problema puedes UNIR las columnas, en una sola... algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+-------+---------+---------+
  3. | id   | to_id | from_id | message |
  4. +------+-------+---------+---------+
  5. |    1 |     4 |       1 | NULL    |
  6. |    2 |     1 |       4 | NULL    |
  7. |    3 |     4 |       1 | NULL    |
  8. |    4 |     1 |       4 | NULL    |
  9. |    5 |     1 |       5 | NULL    |
  10. |    6 |     1 |       6 | NULL    |
  11. +------+-------+---------+---------+
  12. 6 rows in set (0.00 sec)
  13.  
  14. mysql> SELECT id, to_id FROM tabla UNION
  15.     -> SELECT id, from_id FROM tabla;
  16. +------+-------+
  17. | id   | to_id |
  18. +------+-------+
  19. |    1 |     4 |
  20. |    2 |     1 |
  21. |    3 |     4 |
  22. |    4 |     1 |
  23. |    5 |     1 |
  24. |    6 |     1 |
  25. |    1 |     1 |
  26. |    2 |     4 |
  27. |    3 |     1 |
  28. |    4 |     4 |
  29. |    5 |     5 |
  30. |    6 |     6 |
  31. +------+-------+
  32. 12 rows in set (0.00 sec)

De esta manera ya no importa si se envió o recibio... dale un vistazo, haz el intento por resolver la consulta, y si continuas con problemas, postea algo de lo que intentaste hacer y con gusto de ayudamos a resolver los problemas que tengas.

Saludos
Leo.

Etiquetas: mensajes, registro, ultimo
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 18:39.