IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Nombre de réquisitions limitées [AC-2000]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 11
    Points
    11
    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

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Merci Philippe.
    Ta solution fonctionne bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. nombre d'enregistrements limite dans une table sql
    Par lilou229 dans le forum Outils
    Réponses: 3
    Dernier message: 30/01/2007, 15h21
  2. [Configuration] nombre de scripts limité avec buffers de sorties
    Par alcor dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 08/04/2006, 22h59
  3. Réponses: 12
    Dernier message: 16/02/2006, 20h03
  4. Réponses: 1
    Dernier message: 06/11/2005, 17h55
  5. Récupération d'un nombre d'enregistrement limité
    Par hugo123 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/09/2005, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo