N'afficher que les 3 dernières dates d'une requête

N'afficher que les 3 dernières dates d'une requête - SQL/NoSQL - Programmation

Marsh Posté le 05-12-2007 à 22:19:57    

Bonsoir,
 
j'ai la table suivante :

Code :
  1. mysql> select * from maTable4;
  2. +-------------+------------+-------+---------+----------+
  3. | identifiant | journee    | valid | invalid | sourceId |
  4. +-------------+------------+-------+---------+----------+
  5. |           1 | 27/11/2007 |    10 |      20 |        1 |
  6. |           2 | 27/11/2007 |    15 |      25 |        2 |
  7. |           3 | 28/11/2007 |    25 |      30 |        1 |
  8. |           4 | 28/11/2007 |    50 |      25 |        2 |
  9. |           5 | 25/11/2007 |    45 |      25 |        1 |
  10. |           6 | 27/11/2007 |    15 |      25 |        1 |
  11. |           7 | 29/11/2007 |    15 |      35 |        1 |
  12. |           8 | 29/11/2007 |    35 |      15 |        2 |
  13. |           9 | 30/11/2007 |    45 |       5 |        1 |
  14. +-------------+------------+-------+---------+----------+
  15. 9 rows in set (0.00 sec)


J'ai exécuté la requête suivante :

Code :
  1. mysql> select identifiant, journee from maTable4 ORDER BY journee DESC LIMIT 3;
  2. +-------------+------------+
  3. | identifiant | journee    |
  4. +-------------+------------+
  5. |           9 | 30/11/2007 |
  6. |           7 | 29/11/2007 |
  7. |           8 | 29/11/2007 |
  8. +-------------+------------+
  9. 3 rows in set (0.00 sec)


En faite, ce que je souhaite obtenir, ce n'est pas de limiter le nombre de résultats à 3 lignes mais plutôt de limiter l'affichage des résultats à 3 dates.
La requête souhaitée fournira comme résultats :

Code :
  1. +-------------+------------+
  2. | identifiant | journee    |
  3. +-------------+------------+
  4. |           9 | 30/11/2007 |
  5. |           7 | 29/11/2007 |
  6. |           8 | 29/11/2007 |
  7. |           3 | 28/11/2007 |
  8. |           4 | 28/11/2007 |
  9. +-------------+------------+
  10. 5 rows in set (0.00 sec)


J'essaye depuis cet après-midi d'arriver à cet affichage mais sans succès.
Si quelqu'un pouvait m'indiquer la manière de procéder?
 
J'aimerai avoir la requete la plus générale possible, sans avoir à indiquer un intervalle de date comme :

Code :
  1. SELECT identifiant, journee FROM maTable4 WHERE date BETWEEN datedebut datefin ORDER BY journee


Ca doit être général car dans mon cas, c'est des dates mais la recherche peut aussi porter sur des entiers ...
 
Merci


Message édité par lasvegastheking le 05-12-2007 à 22:30:14
Reply

Marsh Posté le 05-12-2007 à 22:19:57   

Reply

Marsh Posté le 06-12-2007 à 08:21:12    

Je pense qu'il faudrait que tu passes par une sous-requete (req1)
style : 1ere requête qui va te selectionner les 3 dernières  
dates différentes avec un group by + order desc + limit 3
=>
30/11/2007  
29/11/2007  
28/11/2007  
 
Puis une autre requete
qui va faire une jointure entre matable4 et req1 ,
le tout trié par date desc et ça devrait marcher, ok ?


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Sujets relatifs:

Leave a Replay

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