Recuperer les N derniers enregistrements - SQL/NoSQL - Programmation
Marsh Posté le 13-11-2005 à 20:34:47
quel SGBD
dans le cas de mysql, limit() es ce qu'il te faut
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
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 :
|
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
Marsh Posté le 14-11-2005 à 05:57:51
leflos5 a écrit : Sinon mathématiquement, tu veux les x derniers enregistrements sur y? |
le pb c'est que y est inconnu
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
Marsh Posté le 14-11-2005 à 20:03:26
leflos5 a écrit : Suffit de le récupérer |
pourquoi se prendre la tete ma solution marche tres bien
Marsh Posté le 14-11-2005 à 20:34:12
betsamee a écrit : pourquoi se prendre la tete ma solution marche tres bien |
Oui je pense C'est juste une piste parce que ça va pour des petits résultats pas si y'a 10000000 d'enregistrements
Marsh Posté le 15-11-2005 à 10:00:42
fluminis a écrit : Bien non justement LIMIT ne semble pas faire ce que je veux |
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.
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
++
Marsh Posté le 15-11-2005 à 13:34:42
Stoke ton nombre de message si tu fais plus de select que d'update
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