Selctionner les 20 derniers enregistrements

idfx -  
batmat Messages postés 1871 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
A voir également:

14 réponses

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
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
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
batmat Messages postés 1871 Statut Membre 114
 
la pseudo colonne d'oracle rownum est présente sous access ?

@++
Poster, poster encore et toujours :-)
0
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
batmat Messages postés 1871 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
batmat Messages postés 1871 Statut Membre 114
 
Et ma solution ?
snif, personne ne veut essayer... ;-p

@++
Poster, poster encore et toujours :-)
0
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
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
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
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
batmat Messages postés 1871 Statut Membre 114
 
Crée plutot une vue qu'une table...

@++
Poster, poster encore et toujours :-)
0
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
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
batmat Messages postés 1871 Statut Membre 114
 
Euuuu de rien :)

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