Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/04/2013, 15:22
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Seleccionar último resultado GROUP BY

Código SQL:
Ver original
  1. SELECT * FROM mensajes
  2. WHERE user1 = '$userId' OR user2 = '$userId' GROUP BY id_conversacion
Esto en realidad te devuelve todas las conversaciones que existan donde uno de dos usuarios determinados participe. Esa consulta te debe estar devolviendo mucha información inútil y/o no relacionada entre sí.
Si lo que quieres es saber cuál es el último mensaje de cada conversación de un usuario, entonces, primero no debes poner el User2, y luego deberás hacer una tabla derivada:
Código MySQL:
Ver original
  1.     (SELECT *
  2.     FROM mensajes
  3.     WHERE user1 = '$userId'
  4.     ORDER BY id_conversacion DESC) T1
  5. GROUP BY id_conversacion;
Esta sería la idea para MySQL. En otros DBMS la sintaxis puede cambiar.

Agregando lo aclarado por andresdzphp, sería:
Código MySQL:
Ver original
  1.     (SELECT *
  2.     FROM mensajes
  3.     WHERE user1 = '$userId' AND user2 = '$usuario2'
  4.     ORDER BY id_conversacion DESC) T1
  5. GROUP BY id_conversacion;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)