Order by sur une date.

Résolu/Fermé
Val_3990 Messages postés 21 Date d'inscription vendredi 22 mai 2020 Statut Membre Dernière intervention 15 juin 2020 - Modifié le 11 juin 2020 à 17:44
jee pee Messages postés 39636 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 - 11 juin 2020 à 17:48
Bonjour, je suis entrain de réaliser un chat et j'aimerai faire une requête sur ma BDD contenant mes message qui retourne la liste des id utilisateurs avec le quelles l'utilisateur couramment connecter est en relation trier par la date d'ajout du dernier message (qu'il soit de l'utilisateur connecter ou non).

Voici ma requete avec les résultats:


SELECT l.* FROM ps_private_message l INNER JOIN ( SELECT id_supplier, MAX(date_add) AS maxDate FROM ps_private_message GROUP BY id_supplier ORDER BY maxDate DESC) groupel 
ON l.id_supplier = groupel.id_supplier AND l.date_add = groupel.maxDate


Le tri est bien fait mais dans le sens inverse (l'utilisateur qui a envoyé un message a 17h31 est derrière les 2 autres qui en envoyé avant) alors que je voudrai que ça soit l'inverse et ce qui est gênant c'est que j'ai le même résultat avec ASC ou DESC.



Je précise par ailleurs que mon attribut date_add est de type DATETIME.
J'ai vue beaucoup de poste lié a ce problème mais aucun ne m'a permit de résoudre le miens.
Merci d'avance et bonne fin de journée.

1 réponse

jee pee Messages postés 39636 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
Modifié le 11 juin 2020 à 17:56
Bonjour,

Trier sur un sous-select ne sert à rien, il faut mettre l'order by en dehors du select entre parenthèse, en fin de la requete, pour trier le resultat global de la requête

SELECT l.* FROM ps_private_message l 
INNER JOIN ( SELECT id_supplier, MAX(date_add) AS maxDate FROM ps_private_message
                        GROUP BY id_supplier ) groupel 
ON l.id_supplier = groupel.id_supplier AND l.date_add = groupel.maxDate
ORDER BY groupel.maxDate DESC




1