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 :

Requete regroupement avec affichage valeurs nulles


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2012
    Messages : 26
    Points : 13
    Points
    13
    Par défaut Requete regroupement avec affichage valeurs nulles
    Bonjour à tous et merci pour votre aide par avance,

    J'effectue une requete regroupement/compte basée sur une autre requete. Mon problème est que les champs vides ne sont pas retournés.

    J'ai une table "employés" avec différentes infos dont date de naissance.

    Ma première requête me sert a calculer l'âge et a déterminer la tranche d'âge des personnes. (25 à 30, 31 à 35, etc...)

    Jusqu'ici tout fonctionne.

    Ensuite, seconde requête pour calculer le nombre de personnes par tranche d'âge avec distinction Hommes/Femmes. Ok sauf que ma requete n'indique pas les tranches pour lesquelles il n'y a pas de personnes. Mon problème est que cette requete est exportée dans Excel pour créer un graphique de type pyramide des ages et que tout cela est automatisé. Et si il manque une catégorie de tranches d'ages, cela ne fonctionne plus.

    Par avance, merci à vous pour votre aide.

    Bonne journée.

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 621
    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 621
    Points : 56 874
    Points
    56 874
    Billets dans le blog
    40
    Par défaut
    bonjour,

    on peut voir les codes SQL des deux requêtes ?

    [EDIT] tu as un exemple ici avec une jointure LEFT JOIN pour dénombrer les commandes des clients avec 0 commande pour ceux qui n'ont jamais commandé. Peut-être pourras-tu l'adapter à ton cas, à suivre... [/EDIT]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2012
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Bonjour et merci de ta réponse,

    Voici les codes

    1ere requete : calcul de l'age et tranches d'age ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tblPersonnel.Nom, tblPersonnel.DateNaissance, Format(DateDiff("y",[DateNaissance],Date()),"yy") AS AgeN, Format(DateDiff("y",[DateNaissance],Date()),"yy")+3 AS AgeN3, Format(DateDiff("y",[DateEntree],Date()),"yy") AS AnciennetéN, Format(DateDiff("y",[DateEntree],Date()),"yy")+3 AS AnciennetéN3, tblPersonnel.Sexe, IIf([AgeN]<=20,"- de 21 ans",IIf([AgeN]>20 And [AgeN]<26,"21 à 25 ans",IIf([AgeN]>25 And [AgeN]<32,"26 à 31 ans",IIf([AgeN]>31 And [AgeN]<36,"32 à 35 ans",IIf([AgeN]>35 And [AgeN]<41,"36 à 40 ans",IIf([AgeN]>40 And [AgeN]<46,"41 à 45 ans",IIf([AgeN]>45 And [AgeN]<51,"46 à 50 ans",IIf([AgeN]>50 And [AgeN]<56,"51 à 55 ans",IIf([AgeN]>54,"Plus de 55 ans"))))))))) AS Tranche, tblPersonnel.DateEntree, tblPersonnel.DateSortie
    FROM tblPersonnel
    WHERE (((tblPersonnel.DateEntree)<#1/1/2013#) AND ((tblPersonnel.DateSortie) Is Null)) OR (((tblPersonnel.DateEntree)<#1/1/2013#) AND ((tblPersonnel.DateSortie)>#12/31/2012#));
    2 nde requete : regroupement par tranche en fonction du sexe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [RQ AGE ANC 5A].Sexe, Count([RQ AGE ANC 5A].Sexe) AS CompteDeSexe, [RQ AGE ANC 5A].Tranche
    FROM [RQ AGE ANC 5A]
    GROUP BY [RQ AGE ANC 5A].Sexe, [RQ AGE ANC 5A].Tranche;
    Pour ce qui est de ton exemple, j'arrive a faire ce genre de choses entre 2 tables mais je ne sais pas sur quels champs appliquer ma jointure lorsqu'il s'agit d'une requete basée sur une autre requête et entre quoi faire cette jointure, c'est à dire entre ma premire requete qui calcule l'age et les tranches mais ensuite avec quoi appliquer la jointure ?

    Merci de ton aide, bonne journée.

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 621
    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 621
    Points : 56 874
    Points
    56 874
    Billets dans le blog
    40
    Par défaut
    bonjour,

    Citation Envoyé par LAURENTN45
    Ok sauf que ma requete n'indique pas les tranches pour lesquelles il n'y a pas de personnes
    Je suppose qu'il peut y avoir le même problème avec les sexes (pour une tranche d'âge donnée, des hommes et pas de femmes parmi le personnel par exemple).

    Le plus simple est peut-être de faire des tables tblSexe(CodeSexe, libelléSexe) et tblTranche(idTranche, AgeNmini, AgeNmaxi, libelléTranche)

    La totalité des combinaisons (idTranche, codeSexe) est obtenue avec le produit croisé :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT tblTranche.idTranche, TblSexe.CodeSexe
    FROM TblSexe, tblTranche;

    La suite dans la démo ci-jointe.

    à suivre...
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. requete avec la valeur NULL
    Par Hinkel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/11/2008, 16h39
  2. J’ai un souci avec les valeurs null sous sql server.
    Par zoltix dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/06/2006, 10h27
  3. passer une requete ajout avec des enregitrement null
    Par LesLemmings dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 13/06/2006, 15h20
  4. Probleme de requete SQL avec la valeur NULL
    Par samyghan dans le forum Installation
    Réponses: 8
    Dernier message: 12/03/2006, 17h24
  5. Pb UPDATE champ nullable avec la valeur Null
    Par zev dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 01/02/2005, 14h04

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