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 :

Compter avec condition dans une requête


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Par défaut Compter avec condition dans une requête
    Bonjour,

    Savez-vous comment on peut utiliser la variable compter sous condition (compter les enregistrements si...)

    Exemple:

    J'ai une table avec les champs "salariés", "société", "Age", "Date d'arrivée". Il y a plus de

    Je veux la liste des sociétés avec en face le nombre de salariés ayant plus de 40 ans et le nombre de salariés arrivés depuis plus de 3 ans.

    Merci infiniment

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,
    tu peux voir la fonction COUNT(), avec les clauses HAVING derriere
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Par défaut Count avec HAVING sous Access
    Bonjour et merci jpcheck,

    j'essaye un code comme celui-ci:

    Count([ENTREPRISE]![SOCIETE]) HAVING (([ENTREPRISE].AGE)>40)

    Mais il me renvoie "Erreur de syntaxe, opérateur absent"

    J'ai certainement mal placé le HAVING mais franchement je ne vois pas. Merci encore pour ton aide

  4. #4
    Membre éclairé Avatar de Daniel MOREAU
    Inscrit en
    Décembre 2004
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 372
    Par défaut
    bonjour,

    essais comme ceci

    Count([ENTREPRISE]![SOCIETE]) HAVING (([ENTREPRISE]![AGE])>'40')

    salut

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Count(ENTREPRISE.SOCIETE) AS NbEnrg
    FROM ENTREPRISE
    WHERE (((ENTREPRISE.AGE)>40)); 'Si AGE est texte placer la valeur entre double quote

  6. #6
    Membre Expert Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Par défaut
    Essai comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Entreprise.societe, Count(Entreprise.age) AS CompteDeage
    FROM Entreprise
    WHERE (((Entreprise.age)>40))
    GROUP BY Entreprise.societe;

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Par défaut Requête pour compter sous condition
    Bonjour et un grand merci pour cette mobilisation générale autour de mon cas.

    J'ai essayé toutes vos solutions et voici ce que ça a donné

    Celle de Daniel Moreau me renvoie encore une erreur de syntaxe

    Celle de Renardo me donne uniquement les salariés ayant plus de 40 ans. Si par exemple je n'ai que la société Bidon qui n'a qu'un seul salarié de plus de 40 ans, le résultat de la requête sera: Bidon:1
    Alors que je voudrais la liste entière des sociétés avec en face le nombre de salariés de plus de 40 ans, même si c'est égal à 0

    Celle de MIKEGO20 ne me renvoie que le chiffre 1 puisque que le champ 'SOCIETE' n'est pas sélectionné dans le code.

    Merci encore en tout cas mais le débat reste ouvert!

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,
    ce qui me fait sourire, c'est que age, c'est l'age du salarie, alors que ton architecture de table semble indiquer l'age de la société...

    et ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT Entreprise.societe, Count(Entreprise.age) AS CompteDeage
    FROM Entreprise
    WHERE (((Entreprise.age)>40) AND Entreprise.[Date d'Arrivée]<Now-1095)
    GROUP BY Entreprise.societe;
    on peut regarder DateAdd je crois.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Par défaut
    Bonjour et merci JPCheck,

    Il s'agit bien d'une table avec la liste des sociétés et pour chacune, la liste des salariés, leur âge et leur date d'entrée.

    Ta requête me renvoie toujours Bidon:1

    Il me faudrait la liste des sociétés et pour chacune d'elle le nombre des salariés ayant plus de 40 ans et le nombre de salariés entrés depuis plus de 3 ans.

  10. #10
    Membre Expert Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Par défaut
    Et comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Entreprise.Societe, Count([Age]=IIf(([Age]>40),0)) AS Sup40Ans, Count([DateArrive]=IIf(Date()>=[DateArrive]+1095,0)) AS Sup3Ans
    FROM Entreprise
    GROUP BY Entreprise.Societe;

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Par défaut
    Yessssss! Ca marche à la perfection. Je suis aux anges. Merci encore à tous.

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

Discussions similaires

  1. [MySQL] Mettre des conditions dans une requête mysql avec pdo
    Par shima5 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/10/2010, 21h11
  2. Comment regrouper avec une condition dans une requête
    Par moilou2 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/07/2008, 10h39
  3. Condition dans une requête croisée
    Par decour dans le forum Access
    Réponses: 1
    Dernier message: 18/10/2005, 10h31
  4. Peut on insérer une condition dans une requête ?
    Par MITCH31 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 22/09/2005, 18h26
  5. Condition dans une requête
    Par fdloisel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/08/2004, 16h55

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