Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/08/2011, 22h18   #1
Invité de passage
 
Inscription : juillet 2009
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 8
Points : 2
Points : 2
Par défaut Nombre de réquisitions limitées

Bonjour à tous,

Je souhaite, dans une requête reprenant les champs "Catégorie" et "Temps", afficher uniquement les 3 meilleurs temps de chaque catégorie.

Pouvez-vous m'aider ?

Merci déjà.


Catégorie Temps
Ai2 00:34:14
Dam 04:49:05
Sen 00:35:01
Sen 00:35:16
Sen 00:35:58
Sen 04:48:54
Sen 04:49:02
Sen 04:49:28
Sen 04:49:30
Sen 04:49:35
V1 00:34:24
V1 00:36:01
V1 04:48:45
V1 04:49:38
V1 04:49:45
V2 00:33:13
V2 00:34:28
V2 00:35:12
V2 00:36:02
V2 04:49:08
V2 04:49:24
V2 04:49:34
V3 04:49:16
la mouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2011, 08h24   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 586
Points : 1 586
Bonjour,

Si il n'y a pas de doublons de temps par catégorie la requête peut s'écrire (sinon il y aura plus de 3 temps par catégorie) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT
 CT.Catégorie,
 CT.Temps
FROM
 CatégorieTemps AS CT
WHERE
 CT.Temps IN (
 SELECT
    TOP 3 TEMPS
 FROM
    CatégorieTemps
 WHERE
    Catégorie=CT.Catégorie
 ORDER BY
   Temps)
ORDER BY
 CT.Catégorie,
 CT.Temps
A noter l'alias (AS CT) de la table est indispensable pour la clause WHERE de la requete dans IN.

Pour avoir exactement 3 temps par catégorie, il faudrait une clef primaire en plus dans la table pour discriminer les enregistrements (ici je considère que la clef primaire s'appelle Id) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
SELECT
 CT.Catégorie,
 CT.Temps
FROM
 CatégorieTemps AS CT
WHERE
 CT.Id IN (
    SELECT
      TOP 3 ID
    FROM
      CatégorieTemps
    WHERE
      Catégorie=CT.Catégorie
    ORDER BY
      Temps,
      Id)
ORDER BY
 CT.Catégorie,
 CT.Temps
Philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/08/2011, 18h13   #3
Invité de passage
 
Inscription : juillet 2009
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 8
Points : 2
Points : 2
Merci Philippe.
Ta solution fonctionne bien
la mouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h19.


 
 
 
 
Partenaires

Hébergement Web