Ordenar mensajes de usuario por último mensaje en SQL

  • Autor Autor noticiasvs
  • Fecha de inicio Fecha de inicio
noticiasvs

noticiasvs

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola a todos, tengo una pequeña duda:

Con esta sentencia:
SELECT usuario2, mensaje FROM conversation WHERE `usuario` = '$variable' group by usuario2 order by idConversation DESC

El tema es que quiero que me muestre un usuario con su último mensaje, pero lo que me hace es un usuario con su primer mensaje. No sé como colocar la sentencia para que se ordene según idConversation desc, porque no funciona si está con group by por lo que pruebo... estuve viendo por google, intentando subconsultas pero no consigo nada.

Gracias y saludos a todos
 
Hola,
Creo que estas tirando mal el sql DESC o ASC , es para ordenar, mayor o menor.
Ahora se me ocurre esto:
Crea un contador, y devuelve el ultimo mensaje.
 
Última edición:
Ya lo solucioné después de 3 horas:

SELECT * FROM (SELECT * FROM conversation ORDER BY fecha DESC) t1 WHERE `usuario` ='$idc3' group by usuario2 order by usuario2.

El tema es ese t1 que no lo ponía y desconocía que existiera algo así, sin él me daba error la sentencia. Saludos
 
Ya lo solucioné después de 3 horas:

SELECT * FROM (SELECT * FROM conversation ORDER BY fecha DESC) t1 WHERE `usuario` ='$idc3' group by usuario2 order by usuario2.

El tema es ese t1 que no lo ponía y desconocía que existiera algo así, sin él me daba error la sentencia. Saludos

Se me habia pasado la fecha, :ambivalence:
:encouragement:
 
La consulta tal como la planteas puede tener un pequeño problema de rendimiento.

Como supongo que tendrás un campo Id, que sea autoincremental.. en teoría el campo fecha de publicación será mayor cuando mayor sea el id.

Si esto es así, y el id es clave primaria, puedes hacer lo siguiente.

SELECT usuario2, mensaje FROM conversation WHERE `usuario` = '$variable'
order by id desc limit 1;

Para verificar si hay un mejor funcionamiento, utiliza la sentencia explain, para saber que ocurre.

En el caso que te digo verás que sólo necesita analizar una linea.( si se cumplen las condiciones que te he comentado), lo que te permitiria soportar mucho más carga.. si crece el tráfico.

explain SELECT usuario2, mensaje FROM conversation WHERE `usuario` = '$variable'
order by id desc limit 1;
 
Gracias, voy a probar!
 

Temas similares

Atrás
Arriba