Ordenar mensagens de usuário por última mensagem em SQL

  • Autor Autor noticiasvs
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
noticiasvs

noticiasvs

Gamma
Programador
Verificación en dos pasos activada
Usuário com poucas negociações! Use sempre o saldo do 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
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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 edição:
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!
 

Tópicos similares

K
Respostas
0
Visitas
574
karloalizano
K
Voltar
Topo