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 :

Requête SQL : top 10


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 23
    Points
    23
    Par défaut Requête SQL : top 10
    Bonjour à tous,

    J'ai actuellement sous Access une tabe qui comprend les éléments suivants :
    - N° client
    - Ref article commandé
    - Nom article commandé
    - Nombre d'articles commandé (sous la ref article bien sûr)

    J'aimerai sortir via SQL pour chaque n° de client le top 10 des Ref article et Nom article ayant le plus grand nombre de d'articles commandés.

    Cela est-il possible ?
    Si oui, si le n°10 et le n°11 du top 10 ont le même nombre d'articles commandés, que va-t-ilse passer (le top 10 sera en fait un top 11) ?

    D'avance merci.

  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,

    une solution parmi d'autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT T1.NumCli, T1.RefArt, T1.NomArt, T1.NbArt
    FROM Articles AS T1
    WHERE T1.RefArt In (SELECT TOP 10 RefArt FROM Articles 
    WHERE NumCli=T1.NumCli ORDER BY NbArt DESC)
    ORDER BY T1.NumCli, T1.NbArt DESC;
    Tous les ex-aequo en TOP 10 apparaissent.

    cordialement,

    Philippe

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par philben
    bonjour,

    une solution parmi d'autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT T1.NumCli, T1.RefArt, T1.NomArt, T1.NbArt
    FROM Articles AS T1
    WHERE T1.RefArt In (SELECT TOP 10 RefArt FROM Articles 
    WHERE NumCli=T1.NumCli ORDER BY NbArt DESC)
    ORDER BY T1.NumCli, T1.NbArt DESC;
    Tous les ex-aequo en TOP 10 apparaissent.

    cordialement,

    Philippe

    Merci pour votre aide.

    Par contre j'essaye de l'appliquer à une autre base mais j'ai vraiment du mal (je suis débutant).

    J'ai la table Garanties qui contient :
    - N° RA (= n° de client)
    - Marque appareil (= marque de l'appareil sur lequel il y a eu une intervention)
    - Code dommage (= n° de dommage)
    - Nombre interventions (= nombre d'interventions pour un code dommage donné).

    Je n'arrive pas à sortir le TOP 10 en nombre d'interventions des codes dommage par N°RA et pour la marque "VW".

    Comment inserer le SELECT TOP 10 dans cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Garanties.[N° RA], Garanties.[Code dommage], Sum(Garanties.[Nombre interventions]) AS [SommeDeNombre interventions]
    FROM Garanties
    GROUP BY Garanties.[N° RA], Garanties.[Code dommage], Garanties.[Marque appareil]
    HAVING (((Garanties.[Marque appareil])="VW"))
    ORDER BY Garanties.[N° RA], Sum(Garanties.[Nombre interventions]) DESC;
    D'avance merci.

  4. #4
    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
    re,

    Sans garantie de fonctionnement (faite à main levée) et de performance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT [N° RA], [Code dommage], Sum([Nombre interventions])
     AS [SommeDeNombre interventions]
    FROM Garanties As T 
    WHERE [Marque Appareil]="VW" 
    GROUP BY  [N° RA], [Code dommage]
    HAVING Sum([Nombre interventions]) In 
    (SELECT Top 10 Sum([Nombre interventions]) FROM Garanties 
    WHERE  [N° RA]=t.[N° RA] AND [Code dommage]=t.[Code dommage] 
    AND [Marque appareil]="VW" 
    ORDER BY Sum([Nombre interventions]) DESC)
    ORDER BY [N° RA], Sum([Nombre interventions]) DESC;
    cordialement,

    Philippe

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par philben
    re,

    Sans garantie de fonctionnement (faite à main levée) et de performance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT [N° RA], [Code dommage], Sum([Nombre interventions])
     AS [SommeDeNombre interventions]
    FROM Garanties As T 
    WHERE [Marque Appareil]="VW" 
    GROUP BY  [N° RA], [Code dommage]
    HAVING Sum([Nombre interventions]) In 
    (SELECT Top 10 Sum([Nombre interventions]) FROM Garanties 
    WHERE  [N° RA]=t.[N° RA] AND [Code dommage]=t.[Code dommage] 
    AND [Marque appareil]="VW" 
    ORDER BY Sum([Nombre interventions]) DESC)
    ORDER BY [N° RA], Sum([Nombre interventions]) DESC;
    cordialement,

    Philippe

    Non, ça ne fonctionne pas.
    Je n'ai pas le top 10.
    Je n'ai que le nombre d'interventions par code dommage et N° RA pour la marque d'appareil "VW".

  6. #6
    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
    re,

    Est-ce mieux chef ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT [N° RA], [Code Dommage], Sum([Nombre interventions]) AS [SommeDeNombre interventions]
    FROM Garanties AS T
    WHERE [Marque Appareil]="VW"
    GROUP BY [N° RA], [Code Dommage]
    HAVING [Code Dommage] In (SELECT Top 10 [Code Dommage] FROM Garanties WHERE  [N° RA]=t.[N° RA]  AND [Marque appareil]="VW" GROUP BY [Code Dommage],[Nombre interventions] ORDER BY Sum([Nombre interventions]) DESC)
    ORDER BY [N° RA], Sum([Nombre interventions]) DESC;
    A vérifier...

    Philippe

  7. #7
    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
    ou mieux, celle-ci sans regroupement sur le nombre d'intervention dans la sous requete pour avoir réellement le top 10 des codes dommage pour chaque RA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT [N° RA], [Code Dommage], Sum([Nombre interventions])
     AS [SommeDeNombre interventions]
    FROM Garanties AS T
    WHERE [Marque Appareil]="VW"
    GROUP BY [N° RA], [Code Dommage]
    HAVING [Code Dommage] IN (SELECT Top 10 [Code Dommage] 
    FROM Garanties WHERE  [N° RA]=t.[N° RA]  AND [Marque appareil]="VW"
     GROUP BY [Code Dommage] 
    ORDER BY Sum([Nombre interventions]) DESC)
    ORDER BY [N° RA], Sum([Nombre interventions]) DESC;
    Philippe

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par philben
    re,

    Est-ce mieux chef ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT [N° RA], [Code Dommage], Sum([Nombre interventions]) AS [SommeDeNombre interventions]
    FROM Garanties AS T
    WHERE [Marque Appareil]="VW"
    GROUP BY [N° RA], [Code Dommage]
    HAVING [Code Dommage] In (SELECT Top 10 [Code Dommage] FROM Garanties WHERE  [N° RA]=t.[N° RA]  AND [Marque appareil]="VW" GROUP BY [Code Dommage],[Nombre interventions] ORDER BY Sum([Nombre interventions]) DESC)
    ORDER BY [N° RA], Sum([Nombre interventions]) DESC;
    A vérifier...

    Philippe
    C'est tout simplement parfait !
    Un grand merci ...

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

Discussions similaires

  1. Requête sql TOP 5
    Par wiwim dans le forum SQL
    Réponses: 10
    Dernier message: 08/06/2013, 16h30
  2. Requête pour TOP SQL
    Par bibi92 dans le forum SQL
    Réponses: 3
    Dernier message: 03/07/2008, 17h41
  3. Requête SQL : récupérer un top rattaché à une colonne ?
    Par SetaSensei dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/02/2008, 18h24
  4. requête sql top
    Par babafredo dans le forum ASP
    Réponses: 3
    Dernier message: 10/09/2007, 17h39
  5. [Requête SQL][ACCESS 2003] - Fonction TOP, DISTINCT
    Par guiguikawa dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 20/06/2006, 11h41

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