Selctionner les 20 derniers enregistrements

idfx -  
batmat Messages postés 1880 Date d'inscription   Statut Membre -
Sous access, j'ai une base formée d'enregistrements dont notamment une colonne composée d'heures classées chronoliquement et je voudrais selectionner uniquement les 20 dernieres heures enregistrées.
merci de votre aide

14 réponses

  1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    Bonjour...

    Jette un oeil ici a tous hazard:
    http://www.commentcamarche.net/ccmguide/ccmcharte.php3

    Sinon sous access ce que tu veux faire est faisable mais ce n'est pas du SQL normalisé...

    En fait tu fais ta selection avec la date en tri descendant
    tu a donc les dernieres heures enregistrées en haut, ensuite une fois que cette requette marche l'astuce consiste a utiliser le mot clé TOP

    ie : SELECT TOP 20 [...] ORDERBY date DESC;

    voili voilou

    @++
    Na kaer eo va Breizh,
    gand ar mor glaz èn-dro dezi !
    0
    1. IDFX
       
      merci beaucoup pour ton tuyau , c'est exactement ça ; par contre ma table contient 56 champs qui sont démultipliés à chaque heure => avec le "select top 20" j'ai uniquement les 20 dernieres heures de mon dernier champ (1/56) ; ; peux-tu encore éclairer ma lanterne pour avoir mes 56 champs en face de mes 20 dernieres heures ??

      Merci encore ASERVE
      0
  2. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    re: idfx

    heu la je suis pas sure d'avoir bien saisi...

    tu veux que les 56 champs s'affichent ? si c'est ca:

    SELECT TOP 20 * FROM ta_tableGROUP BY le_champ_heure DESC

    Sinon c'est que je reponds a coté de la plaque :-)

    @++

    Na kaer eo va Breizh,
    gand ar mor glaz èn-dro dezi !
    0
  3. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    la pseudo colonne d'oracle rownum est présente sous access ?

    @++
    Poster, poster encore et toujours :-)
    0
  4. IDFX
     
    MErci pour ta réponse j'ai un peu de mal à la faire fonctionner ; en fait avec le "select top 20" j'arrive aux 20 dernieres heures de mon dernier champ (qui se nomme VIE = dernier champ par ordre alphabétique) , ma table d'origine contient 55 autres champs comme VIE et il faut que je resorte les 20 dernieres heures associées =>56 champs "Comstcok" * 20 "heure" associée..

    heure Comstock Milieu
    17:19:00 VIE 18,8050003051758
    17:17:00 VIE 18,8450012207031
    17:15:00 VIE 18,8050003051758
    17:11:00 VIE 18,8199996948242
    17:03:00 VIE 18,8450012207031
    17:01:00 VIE 18,8349990844727
    16:58:00 VIE 18,7649993896484
    16:56:00 VIE 18,7350006103516
    16:49:00 VIE 18,7449989318848
    16:46:00 VIE 18,7249984741211
    16:45:00 VIE 18,6949996948242
    16:43:00 VIE 18,685001373291
    16:38:00 VIE 18,5999984741211
    16:36:00 VIE 18,6149997711182
    16:34:00 VIE 18,5799999237061
    16:29:00 VIE 18,5950012207031
    16:22:00 VIE 18,6199989318848
    16:18:00 VIE 18,5849990844727
    16:16:00 VIE 18,6450004577637
    16:13:00 VIE 18,6650009155273

    Excuses moi pour ces explications mais je suis un débutant un peu perdu dans la jungle du sql & d'access; merci encore de ton aide
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      hop la...

      Tu n'as pas a t'excuser :-)

      mais je n'ai pas encore tout a fait saisi...
      ta table resemble à

      heure | champ1 | milieu | heure | champ2 | milieu ... ?

      et tu veux recuper pour chaque champ (1, 2, 3,... 56) les vingts derniers ?

      @+

      Na kaer eo va Breizh,
      gand ar mor glaz èn-dro dezi !
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. IDFX
     
    Rien ne vaut un exemple ; ci dessous un extrait de ma table d'origine : mon probleme c'est d'obtenir les 20 dernieres heures de "VIE" (de 17h19 à 16h13) et les 20 dernières heures de "UG" (de 17h19 à 16h18) ; A partir de là tu feras de moi un être heureux

    Comstock Milieu Bid Time Ask Time
    VIE 18,8050003051758 17:19:00 17:19:00
    VIE 18,8450012207031 17:17:00 17:17:00
    VIE 18,8050003051758 17:15:00 17:15:00
    VIE 18,8199996948242 17:11:00 17:11:00
    VIE 18,8450012207031 17:03:00 17:03:00
    VIE 18,8349990844727 17:01:00 17:01:00
    VIE 18,7649993896484 16:58:00 16:58:00
    VIE 18,7350006103516 16:56:00 16:56:00
    VIE 18,7449989318848 16:49:00 16:49:00
    VIE 18,7249984741211 16:46:00 16:46:00
    VIE 18,6949996948242 16:45:00 16:45:00
    VIE 18,685001373291 16:43:00 16:43:00
    VIE 18,5999984741211 16:38:00 16:38:00
    VIE 18,6149997711182 16:36:00 16:36:00
    VIE 18,5799999237061 16:34:00 16:34:00
    VIE 18,5950012207031 16:29:00 16:29:00
    VIE 18,6199989318848 16:22:00 16:22:00
    VIE 18,5849990844727 16:18:00 16:18:00
    VIE 18,6450004577637 16:16:00 16:16:00
    VIE 18,6650009155273 16:13:00 16:13:00
    VIE 18,6549987792969 16:11:00 16:11:00
    VIE 18,7150001525879 16:06:00 16:06:00
    VIE 18,9799995422363 16:03:00 16:03:00
    VIE 18,7350006103516 16:02:00 16:02:00
    VIE 18,9850006103516 16:01:00 16:01:00
    VIE 18,9650001525879 15:59:00 15:59:00
    UG 40,6849975585938 17:19:00 17:19:00
    UG 40,7099990844727 17:17:00 17:17:00
    UG 40,7999992370605 17:14:00 17:14:00
    UG 40,9499969482422 17:11:00 17:11:00
    UG 41,0550003051758 17:06:00 17:06:00
    UG 40,9850006103516 17:02:00 17:02:00
    UG 40,9449996948242 16:58:00 16:58:00
    UG 40,995002746582 16:56:00 16:56:00
    UG 40,9850006103516 16:49:00 16:49:00
    UG 40,9300003051758 16:47:00 16:47:00
    UG 40,9650001525879 16:45:00 16:45:00
    UG 40,875 16:43:00 16:43:00
    UG 40,8450012207031 16:41:00 16:41:00
    UG 40,8400001525879 16:36:00 16:36:00
    UG 40,7699966430664 16:34:00 16:34:00
    UG 40,7399978637695 16:27:00 16:27:00
    UG 40,7350006103516 16:25:00 16:25:00
    UG 40,7600021362305 16:22:00 16:22:00
    UG 40,7350006103516 16:20:00 16:20:00
    UG 40,7449989318848 16:18:00 16:18:00
    UG 40,8199996948242 16:13:00 16:13:00
    UG 40,7750015258789 16:11:00 16:11:00
    UG 40,8150024414063 16:09:00 16:09:00

    MERCI ENCORE
    0
  7. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    Fais un
    select champ1, champ2, etc., rownum

    Si ça plante pas c'est que c'est supporté : c'est une numérotation dynamique des tuples retournés par la requête
    => avec ça tu mets simplement la clause
    where rownum<=20

    et pis c fini...

    Attention, si tu as une clause order by, cette méthode ne marche pas car la numérotation des tuples se fait avant le tri :-(

    @++
    Poster, poster encore et toujours :-)
    0
    1. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
       
      Et ma solution ?
      snif, personne ne veut essayer... ;-p

      @++
      Poster, poster encore et toujours :-)
      0
  8. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    oki je crois que j'ai compris :)
    je pensais pas que ca marcherais comme ca, du coup je ne sait pas trop si c'est bien propre mais a prioris ca marche ;-)

    SELECT * FROM table AS a
    WHERE ( date in (
    SELECT TOP 2 date from table where nom=a.nom ORDER BY date DESC));

    Dis moi si c'est ok,

    @++

    Na kaer eo va Breizh,
    gand ar mor glaz èn-dro dezi !
    0
  9. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    yep bon faut remplacer nom et a.nom par comstock et a.comstock biensur :)

    Na kaer eo va Breizh,
    gand ar mor glaz èn-dro dezi !
    0
  10. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    et le 2 par 20 :)... je crois que c'est tout cette fois...

    Na kaer eo va Breizh,
    gand ar mor glaz èn-dro dezi !
    0
  11. IDFX
     
    j'ai testé et ca marche ; par contre ma table étant une requête selection je n'arrive pas à la faire tourner dessus je suis obligé de la créer en dur....Si tu as un petit tuyau pour ce souci mais quoiqu'il arrive je suis vraiment trés content MERCI C'est TOP (20) :-)
    0
  12. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    Crée plutot une vue qu'une table...

    @++
    Poster, poster encore et toujours :-)
    0
  13. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    Salut vous deux :)

    sous acces tu peux selectionner sur une requete... tu remplace le nom de la table par le nom de la requete a chaque fois... ca devrai passer :o)

    dis moi si ca marche :)

    @++

    Na kaer eo va Breizh,
    gand ar mor glaz èn-dro dezi !
    0
  14. IDFX
     
    En fait ma requete representant ma base d'origine est composée de plus de 9000 enregistrments ; quoiqu'il arrive c'est trés long , je m'en suis sorti en créant 56 requetes (1 requete par Comstock) , la dessus une reqete union selectionnant les 20 premiers entregistrements de chacune des 56 tables et le tour est joué ; c'est un peu laborieux mais le résultat est intantanné (important pour moi) ; merci encore à vous deux (batmat & aserve)
    0
  15. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    Euuuu de rien :)

    @++
    Poster, poster encore et toujours :-)
    0