Recuperer les N derniers enregistrements

Recuperer les N derniers enregistrements - SQL/NoSQL - Programmation

Marsh Posté le 13-11-2005 à 17:23:16    


Bonjour,
 
Question bête, comment récupérer les N derniers enregistrement d'une table ?
 
J'ai bien un champs date mais je veux recupérer les champs classés par ordre de date croissante.  
 
Ma table contient :
2005-11-10  a
2005-11-11  b
2005-11-12  c
2005-11-13  d
2005-11-14  e
 
et je voudrais
c, d, e (dans cet ordre et pas e,d,c)
 
Une idée ?
 
Merci d'avance
 
Fluminis


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 13-11-2005 à 17:23:16   

Reply

Marsh Posté le 13-11-2005 à 20:34:47    

quel SGBD
dans le cas de mysql, limit() es ce qu'il te faut

Reply

Marsh Posté le 13-11-2005 à 20:44:16    

Bien non justement LIMIT ne semble pas faire ce que je veux
 
SELECT * FROM matable ORDER BY col2 ASC LIMIT 3
=> a, b, c
 
SELECT * FROM matable ORDER BY col2 DESC LIMIT 3
=> e, d, c
 
et moi je veux c, d, e
et je voudrais eviter de faire une requete preliminaire avant pour récupérer le nombre de resutats sans limit puis faire
SELECT * FROM matable ORDER BY col2 ASC LIMIT n-3,3
 
une idée ?
 
EDIT : j'utilise mysql

Message cité 1 fois
Message édité par fluminis le 13-11-2005 à 20:45:24

---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 13-11-2005 à 21:21:31    

si ta version de mysql supporte les requetes imbriquees (>=4.1.X)
tu peux faire:

Code :
  1. select A.col1,A.col2
  2. from
  3. (select col1,col2 from matable order by col2 desc limit 3) A
  4. order by A.col2 asc

Reply

Marsh Posté le 14-11-2005 à 05:06:26    

Sinon mathématiquement, tu veux les x derniers enregistrements sur y?
Donc limit y-x,x ;)

Reply

Marsh Posté le 14-11-2005 à 05:57:51    

leflos5 a écrit :

Sinon mathématiquement, tu veux les x derniers enregistrements sur y?
Donc limit y-x,x ;)


le pb c'est que y est inconnu

Reply

Marsh Posté le 14-11-2005 à 18:07:01    

betsamee a écrit :

le pb c'est que y est inconnu


Suffit de le récupérer ;)
 
Sinon garder à chaque insert quelque part le last_id :)
 
Ou y'a peut être quelque chose à faire du côté des procédures stockées si mysql >=5

Reply

Marsh Posté le 14-11-2005 à 20:03:26    

leflos5 a écrit :

Suffit de le récupérer ;)
 
Sinon garder à chaque insert quelque part le last_id :)
 
Ou y'a peut être quelque chose à faire du côté des procédures stockées si mysql >=5


pourquoi se prendre la tete ma solution marche tres bien  :D  

Reply

Marsh Posté le 14-11-2005 à 20:34:12    

betsamee a écrit :

pourquoi se prendre la tete ma solution marche tres bien  :D


Oui je pense :D C'est juste une  piste parce que ça va pour des petits résultats pas si y'a 10000000 d'enregistrements :P

Reply

Marsh Posté le 15-11-2005 à 10:00:42    

fluminis a écrit :

Bien non justement LIMIT ne semble pas faire ce que je veux
 
SELECT * FROM matable ORDER BY col2 ASC LIMIT 3
=> a, b, c
 
SELECT * FROM matable ORDER BY col2 DESC LIMIT 3
=> e, d, c
 
et moi je veux c, d, e
et je voudrais eviter de faire une requete preliminaire avant pour récupérer le nombre de resutats sans limit puis faire
SELECT * FROM matable ORDER BY col2 ASC LIMIT n-3,3
 
une idée ?
 
EDIT : j'utilise mysql


 
Où est le probleme avec e,d,c?
 
Il te suffit de stocker ca dans un tableau et lire ensuite ce tableau de la fin vers le debut.


---------------
MZP est de retour
Reply

Marsh Posté le 15-11-2005 à 10:00:42   

Reply

Marsh Posté le 15-11-2005 à 11:59:50    

oui bien sur je peux stocker ça dans un tableau et faire le traitement ensuite, mais si une requete sql le faisait pour moi ça serait encore plus simple non ?
Soit je vais faire deux requetes ( SELECT count puis mon select) ma version de mySQL etant trop vielle pour accepter les requetes imbriquées soit je vais utiliser un traitement sur des tableaux
 
++


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 15-11-2005 à 13:34:42    

Stoke ton nombre de message si tu fais plus de select que d'update ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed