Selectionner les n derniers elements

Résolu/Fermé
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 - 13 mars 2013 à 12:07
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 - 13 mars 2013 à 14:04
Bonjour,

Je débute en programmation web avec php et mysql. et je fais du chat.
j'ai une table message qui stocke les messages envoyé, le temps, le destinataire et bien sur l'expéditaire.
Quand le destinataire se connecte, je souhaite afficher les 20 derniers messages recues et les ordonner par temps: du plus ancien au plus récent. c'est à dire le plus ancien occupe la premiere ligne, et le plus recent est plus bas permettant à l'utilisateur de le voir directment.
voici les requetes que j'ai faites mais qui ne réponde pas à mes attentes.
select * from message order by temps desc limit 0,20;
cette requete selectionne les 20 derniers éléments mais le plus récent est affiché en entete (dernier enregistrement dans la BD) mais le "desc" le rend en premier.
si je fais
select * from message order by temps asc limit 0,20;
il selectione les 20 premier, ce qui est déjà faux.


J'espère que quelqu'un comprend un peu mon problem.
je souhaite un enregistrement ordonné (du plus ancien au plus récent) des 20 derniers élément.
Merci d'avance pour vos réponses. je suis vraiment dans le besoin.


A voir également:

1 réponse

blux Messages postés 25999 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 3 289
13 mars 2013 à 13:20
Salut,

as-tu essayé un SELECT de SELECT ? , genre :

SELECT * FROM (SELECT * FROM message order by temps desc limit 0,20) order by asc temps;

0
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 23
13 mars 2013 à 13:37
Error
Every derived table must have its own alias

Merci
0
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 23
Modifié par ajp55 le 13/03/2013 à 13:42
merci, j'ai ajouté un alias
SELECT * FROM (SELECT * FROM message order by temps desc limit 0,20) AS m order by m.temps asc

et ça marché.
Merci, y'aurait-il pas meilleur facon de faire?
0
blux Messages postés 25999 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 3 289
13 mars 2013 à 13:46
Si j'en crois ce que disent les divers résultats google, je ferais ça :

SELECT * FROM (SELECT * FROM message order by temps desc limit 0,20) AS Alias1 order by asc temps;
0
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 23
13 mars 2013 à 13:47
est ce que asc ne vient pas apré temps comme je l'ai faite?
0
blux Messages postés 25999 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 3 289
13 mars 2013 à 14:02
Je ne connais pas précisément la syntaxe MySQL...
0