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 :

Afficher un count = 0 ?


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Afficher un count = 0 ?
    Bonjour à tous,
    J'ai un problème avec la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT count(Distinct(T1.ClgCode)) as 'Nombre d''activités', 
    count(distinct(T3.CardCode)) as 'Nombre d''acheteurs', 
    count(Distinct(T4.CardCode)) as 'Nomre de nouveaux clients', 
    T0.SlpName as 'Commercial', T2.[U_OB1Secteur] as 'Zone Commercial'
    FROM OSLP T0 
    INNER JOIN OCLG T1 ON T0.SlpCode = T1.SlpCode 
    INNER JOIN [dbo].[@OB1DEPARTMENT] T2 ON T0.SlpCode = T2.[U_OB1SLPCODE] 
    INNER JOIN ORDR T3 ON T0.SlpCode = T3.SlpCode
    INNER JOIN OCRD T4 ON T0.SlpCode = T4.SlpCode
    WHERE (T1.CntctDate >= '[%1]' and  T1.CntctDate <= '[%2]')
    AND (T3.DocDate >= '[%1]' and T3.DocDate <= '[%2]')
    AND (T4.CreateDate >= '[%1]' and T4.CreateDate <= '[%2]')
    GROUP BY T0.SlpName, T2.[U_OB1Secteur] 
    ORDER BY T0.SlpName, T2.[U_OB1Secteur]


    Ma requête me renvoie bien ce que je demande, si ce n'est que si un des count est égal à zéro pour un de mes SlpCode (mes commercial), alors la ligne du commercial n'apparait pas du tout.
    Même si les deux autres count renvoie quelques chose.
    Sachant que derrière, je souhaite exploiter les résultats dans un tableau croisé dynamique.

    Merci d'avance à ceux qui auront une idée...

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 804
    Points
    30 804
    Par défaut
    C'est certainement parce qu'il faudrait remplacer tes jointures strictes par des jointures externes.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    J'ai bien essayé, mais le résultat était le même. J'ai essayé même en mettant un FULL OUTER JOIN, mais pareil...

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 804
    Points
    30 804
    Par défaut
    Il faut aussi déplacer les restrictions dans la condition de jointure...
    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
    21
    22
    23
    24
    25
    26
    SELECT  COUNT(DISTINCT(T1.ClgCode))     AS "Nombre d''activités" 
        ,   COUNT(DISTINCT(T3.CardCode))    AS "Nombre d''acheteurs" 
        ,   COUNT(DISTINCT(T4.CardCode))    AS "Nombre de nouveaux clients" 
        ,   T0.SlpName                      AS "Commercial"
        ,   T2.[U_OB1Secteur]               AS 3Zone Commercial3
    FROM    OSLP    T0 
        LEFT JOIN 
            OCLG    T1 
            ON  T0.SlpCode  = T1.SlpCode
            AND T1.CntctDate BETWEEN '[%1]' AND '[%2]'     
        LEFT JOIN
            [dbo].[@OB1DEPARTMENT] T2 
            ON  T0.SlpCode  = T2.[U_OB1SLPCODE] 
        LEFT JOIN 
            ORDR    T3
            ON  T0.SlpCode  = T3.SlpCode
            AND T3.DocDate  BETWEEN '[%1]' AND '[%2]'
        LEFT JOIN
            OCRD    T4
            ON  T0.SlpCode  = T4.SlpCode
            AND T4.CreateDate BETWEEN '[%1]' AND '[%2]'
    GROUP BY T0.SlpName
        ,   T2.[U_OB1Secteur] 
    ORDER BY T0.SlpName
        ,   T2.[U_OB1Secteur]
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    C'est bon ça marche !
    Effectivement en plaçant les restrictions dans les conditions de jointure, j'obtiens le résultat voulu.
    Désolé pour la réponse tardive.
    Merci pour le coup de main.

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

Discussions similaires

  1. [MySQL] Afficher fonction count
    Par afibase dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/01/2014, 18h28
  2. Afficher un COUNT = 0
    Par Sup3rc0c0 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/11/2013, 08h58
  3. Afficher le résultat d'un COUNT même null
    Par trangsene dans le forum Langage SQL
    Réponses: 10
    Dernier message: 18/11/2005, 18h07
  4. [MySQL] Requete count et l'afficher
    Par tyarak dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/11/2005, 21h57
  5. Afficher les enregistrements si le count() vaut 0
    Par j14z dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/04/2004, 09h51

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