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 :

Faire une sélection Top 5


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 191
    Points : 59
    Points
    59
    Par défaut Faire une sélection Top 5
    Bonjour,
    Dans une table, j'ai une colonne catégorie, une colonne article, une colonne total.
    Je souhaiterai qu'une requête me donne les 5 (ou 10) plus gros total des articles pour chaque catégorie...

    Exemple :
    Catégorie bleu : Les 5 plus gros articles
    Catégorie rouge : les 5 plus gros articles
    ....

    Merci pour votre aide

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 863
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 863
    Points : 58 415
    Points
    58 415
    Billets dans le blog
    44
    Par défaut
    bonsoir lito74,

    quelque chose comme:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT categorie, article, total FROM LaTable T
    WHERE T.total in (SELECT TOP 5 U.total FROM LaTable U WHERE
                          U.categorie=T.categorie ORDER BY U.total DESC)
    ORDER BY T.categorie, T.total DESC;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 191
    Points : 59
    Points
    59
    Par défaut
    Merci f-leb pour ta réponse
    J'ai une petite question toutefois : Pourquoi deux tables ?
    Voici mon code, mais le résultat n'est pas concluant, car il en 'sort' moins de 5 par catégorie (mais en revanche 6 pour certaines catégories) alors que la table contient largement plus de 5 enregistrements par catégorie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT      Catégorie, Id_Produit, Nbre, Total
    FROM          dbo.TT_Stat_CA_Pdt
    WHERE      (Nbre IN
                                (SELECT      TOP 5 Nbre
                                  FROM           TT_Stat_CA_Pdt
                                  ORDER BY Nbre DESC))
    ORDER BY Catégorie

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 863
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 863
    Points : 58 415
    Points
    58 415
    Billets dans le blog
    44
    Par défaut
    Citation Envoyé par lito74
    J'ai une petite question toutefois : Pourquoi deux tables ?
    c'est la même table "LaTable" mais avec des alias T et U

    Citation Envoyé par Aide Access
    alias (alias (SQL) : autre nom d'une table ou d'un champ dans des expressions. Les alias sont souvent utilisés pour raccourcir le nom de la table ou du champ pour les références qui y seront faites dans le code, pour éviter d'éventuelles références ambiguës ou pour fournir un nom plus évocateur dans des résultats de requête.
    ben là il y a justement ambiguïté puisque la requête et la sous-requête vont pêcher dans la même table==>mettre des alias sinon Access pourrait se mélanger les pinceaux.

    l'ambiguïté étant levée avec des alias, tu peux corréler la requête et la sous-requête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ...WHERE U.categorie=T.categorie
    Citation Envoyé par lito74
    Dans une table, j'ai une colonne catégorie, une colonne article, une colonne total.
    et c'est quoi cette nouvelle colonne Nbre dans ton code ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 191
    Points : 59
    Points
    59
    Par défaut
    Merci beaucoup f-leb. Tes explications m'ont permis de trouver la solution qui est exactement le code de ta première réponse.
    Pour la petite info, la colonne 'Nbre' remplace la colonne 'Total'
    Merci encore

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

Discussions similaires

  1. Faire une sélection sur un mois donnée
    Par brousaille dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/11/2006, 05h03
  2. Faire une sélection sur les cumuls : HAVING
    Par jpclabaux dans le forum Débuter
    Réponses: 3
    Dernier message: 20/10/2006, 16h44
  3. Réponses: 2
    Dernier message: 24/08/2006, 12h33
  4. Faire une sélection sur une image en MFC
    Par rider74 dans le forum MFC
    Réponses: 2
    Dernier message: 04/05/2006, 14h55
  5. Faire une sélection sur une image?
    Par sybilla dans le forum MFC
    Réponses: 3
    Dernier message: 29/08/2005, 14h34

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