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

Langage SQL Discussion :

select distinct à deux niveaux pour count sans doublon


Sujet :

Langage SQL

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Points : 15
    Points
    15
    Par défaut select distinct à deux niveaux pour count sans doublon
    Bonjour, Voici le problème que je ne parviens pas à résoudre :

    Une table simple (je ne souhaite pas supprimer les doublons relatifs) :

    Table Commande :

    N°----Entrepot----No commande----Bon de livraison
    1-----PARIS-------5467-------------53
    2-----PARIS-------5467-------------53
    3-----BORDEAUX---3466------------12
    4-----BORDEAUX---3466------------12
    10----BORDEAUX---6813------------20

    (dsl pour la laideur du tableau, y a t il un moyen de les faire mieux?)

    Je souhaite compter pour chaque commande distincte par entrepôt le nombre de bons de livraisons distincts.

    On voit donc que pour Paris il y a une commande n° 5467 avec un BL n°53 en deux lignes.

    Le résultat cherché est donc :
    No commande-----Entrepot-------CompteDeBon de livraison
    3466-------------BORDEAUX-------1
    5467-------------PARIS-----------1
    6813-------------BORDEAUX-------1

    Or avec la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT Commande.[No commande], Commande.Entrepot, Count(Commande.[Bon de livraison]) AS [CompteDeBon de livraison]
    FROM Commande
    GROUP BY Commande.[No commande], Commande.Entrepot;
    J'obtiens :
    No commande-----Entrepot-------CompteDeBon de livraison
    3466-------------BORDEAUX-------2
    5467-------------PARIS-----------2
    6813-------------BORDEAUX-------1

    Ce qui ne correspond pas à mon souhait.

    Quelqu'un aurait-il la gentillesse de m'aider (je suis sûr que c'est tout bête mais je n'ai rien trouvé dans le forum)

    Merci!!

    Von Wolf

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Sur SQL Server 2005, on peux faire comme cela avec les fonctions de ranking.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WITH SELECTION AS(
    SELECT [N°Commande],BONLIVRAISON,ROW_NUMBER()Over(PartitionBy BONLIVRAISON orderby [N°Commande])AS OrdreCommande FROM COMMANDE )
    SELECT [N°COMMANDE],BONLIVRAISON,Max(OrdreCommande)FROM SELECTION GROUPBY [N°COMMANDE],BONLIVRAISON
    

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Points : 15
    Points
    15
    Par défaut SQL Acces
    Merci pour ta réponse ylarvor.

    Je travaille avec Access 2007.
    J'ai essayé ton code mais il me dit "expected INSERT, DELETE, blablabla".

    Ne manque-t-il pas quelque chose?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Les fonctions de ranking n'existe pas sous access.

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Points : 15
    Points
    15
    Par défaut autre méthode?
    Il doit bien y avoir un moyen simple sous Access de produire ce tableau, non?

    J'ai vraiment besoin de cette requête, à l'aide!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Points : 15
    Points
    15
    Par défaut Solution
    Bon ben, j'ai fini par trouver une solution en bricolant autre chose.

    La voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT Com.[No commande], Com.Entrepot, Count(Com.[Bon de livraison]) AS [CompteDeBon de livraison]
    FROM (SELECT DISTINCT Commande.[Bon de livraison], Commande.[No commande], Commande.Entrepot
    FROM Commande)  AS Com
    GROUP BY Com.[No commande], Com.Entrepot;
    Je crée une sous-requête qui enlève les doublons par un "select distinct" puis je réinjecte le résultat sous forme de table en tant que sous-requête et je fais un simple count sur les bons de livraison.
    C'était effectivement pas sorcier..

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

Discussions similaires

  1. SELECT de deux tables pour INSERT dans une troisième
    Par vinsse2001 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 14/02/2013, 11h08
  2. COUNT sans doublons
    Par Pat_AfterMoon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/04/2010, 13h35
  3. [SQL]select where deux des champs sont en doublons
    Par Eruil dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/07/2007, 15h58
  4. Merge avec deux vector, sans doublons ?
    Par b Oo dans le forum SL & STL
    Réponses: 8
    Dernier message: 06/11/2006, 23h00
  5. equivalent SELECT DISTINCT pour MyBase?
    Par chrisou31 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/03/2004, 19h33

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