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 l'apparition d'expressions spécifiques dans des enregistrements [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Eleveur de chèvres dans le Vercors
    Inscrit en
    Mai 2017
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Eleveur de chèvres dans le Vercors

    Informations forums :
    Inscription : Mai 2017
    Messages : 56
    Points : 36
    Points
    36
    Par défaut Compter l'apparition d'expressions spécifiques dans des enregistrements
    Bonjour !

    J'ai une table :
    Nom : Capture.JPG
Affichages : 157
Taille : 36,5 Ko

    Et j'aimerais créer une requête qui compte le nombre de fois qu'apparaît l'expression "OK" "NC" et "CNP" par ligne pour tel code.
    J'ai commencé à faire une requête simple en reprenant cette table et en la liant avec une table "Etat OK" "Etat NC"... qui reprends la liste de tous les codes avec un OK à côté pour la table état ok... :
    Nom : Capture.JPG
Affichages : 199
Taille : 21,7 Ko

    Dans opération j'ai mis "compte" pour état ok, mais tout ce que ça fait c'est juste rajouter un champs état ok avec que des 1 dans le résultat de ma requête.

    Y aurait-il une opération en requête ou que je pourrais écrire dans le code SQL pour qu'il me compte bien le nombre de OK, NC... par ligne?

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 728
    Points : 14 742
    Points
    14 742
    Par défaut
    Bonsoir,
    pour compter il faut au minimum un champ de regroupement sinon on obtient, comme dans ton cas, des 1 partout, car on ne peut pas avoir à la fois le détail et le résultat du comptage sauf si on utilise les fonctionne de domaine (CompteDom, SomDom ...) si cela est possible.
    Il faudrait en premier lieu poster ta requête, ensuite préciser sur quel champ de la requête tu souhaiterais faire le regroupement.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Eleveur de chèvres dans le Vercors
    Inscrit en
    Mai 2017
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Eleveur de chèvres dans le Vercors

    Informations forums :
    Inscription : Mai 2017
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Bonjour tee_grandbois,

    Merci pour ton intérêt pour mon petit problème ,
    mon soucis c'est que ce n'est pas un champs en particulier que j'aimerais compter mais bien les valeurs dans les lignes, nombre de OK pour tel code... voilà ma requête en mode création:
    Nom : Capture.JPG
Affichages : 139
Taille : 57,9 Ko

    et voilà en SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Comparaison.ENSEIGNE, Comparaison.CLIENT, Comparaison.VILLE, Comparaison.Réseau, Count(Etats.OK) AS CompteDeOK
    FROM Comparaison INNER JOIN Etats ON Comparaison.LIEN = Etats.LIEN
    GROUP BY Comparaison.ENSEIGNE, Comparaison.CLIENT, Comparaison.VILLE, Comparaison.Réseau;
    après je peux utiliser les champs L1 puis M1... comme champs de regroupement des expressions? Mais après comment je ferais pour tout compter?
    Mon souci avec CompDom c'est que ça compte le nombre d'enregistrement et ça ne prend pas en compte les différentes expressions (OK, NC, CNP).

    Merci d'avance !

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Eleveur de chèvres dans le Vercors
    Inscrit en
    Mai 2017
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Eleveur de chèvres dans le Vercors

    Informations forums :
    Inscription : Mai 2017
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Du coup j'ai changé la requête pour avoir 1 champ de regroupement qui est Expr1001:

    Nom : Capture.JPG
Affichages : 181
Taille : 31,9 Ko

    J'ai essayé ça mais il me mais erreur dans la syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT L1.LIEN, L1.Expr1001, Etats.OK
    FROM L1 INNER JOIN Etats ON L1.LIEN = Etats.LIEN
    GROUP BY L1.LIEN, L1.Expr1001
    HAVING ((Count([Etats].[OK])=IIf("OK",1,""));
    Si non j'ai aussi essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT L1.LIEN, L1.Expr1001, Count(Etats.OK) AS CompteDeOK
    FROM L1 INNER JOIN Etats ON L1.LIEN = Etats.LIEN
    GROUP BY L1.LIEN, L1.Expr1001
    HAVING (((Count(Etats.OK))=IIf([L1].[Expr1001]=[Etats].[OK],1,"")));
    Mais du coup il n'y a pas d'expression et ça ne fonctionne pas, le soucis c'est que quand je mets uniquement l'expression "OK", il compte les OK de la table état et pas de la requête L1.

    Sinon j'ai carrément virer la table Etats et j'essaie de créer une requête pour s'il trouve l'expression "OK" dans champs L1 de la table comparaison, il me met un 1, sinon rien, mais même pour ça je suis blloquée, il me met "données incompatibles dans l'expression du critère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Comparaison.LIEN, Comparaison.L1_Expr1001
    FROM Comparaison
    WHERE (((Comparaison.L1_Expr1001)=IIf("OK",1,"")));

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Eleveur de chèvres dans le Vercors
    Inscrit en
    Mai 2017
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Eleveur de chèvres dans le Vercors

    Informations forums :
    Inscription : Mai 2017
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    C'est bon j'ai réussi à créer 3 requêtes, 1 pour chaque état (OK, NC, CNP), j'ai utilisé ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Comparaison.LIEN, IIf([L1_Expr1001]="OK",1,' ') AS [écart L1], IIf([M1_Expr1001]="OK",1,' ') AS [écart M1], IIf([Me1_Expr1001]="OK",1,' ') AS [écart Me1], IIf([J1_Expr1001]="OK",1,' ') AS [écart J1], IIf([V1_Expr1001]="OK",1,' ') AS [écart V1], IIf([S1_Expr1001]="OK",1,' ') AS [écart S1], IIf([D1_Expr1001]="OK",1,' ') AS [écart D1], IIf([L2_Expr1001]="OK",1,' ') AS [écart L2], IIf([M2_Expr1001]="OK",1,' ') AS [écart M2], IIf([Me2_Expr1001]="OK",1,' ') AS [écart Me2], IIf([J2_Expr1001]="OK",1,' ') AS [écart J2], IIf([V2_Expr1001]="OK",1,' ') AS [écart V2], IIf([S2_Expr1001]="OK",1,' ') AS [écart S2], IIf([D2_Expr1001]="OK",1,' ') AS [écart D2]
    FROM Comparaison;
    Concrètement ça donne ça:
    Nom : Capture.JPG
Affichages : 131
Taille : 39,0 Ko

    Mais là, du coup je cherche à avoir le total dans chaque requête des 1 par code (mettre une colonne total quoi). J'ai cherché pour faire des totaux mais tout ce que j'ai trouvé c'est une ligne total mais ça m'est complétement inutile étant donné que je veux sommer des lignes et pas des champs ?

    Quelqu'un aurait-il une idée svp?

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 728
    Points : 14 742
    Points
    14 742
    Par défaut
    Bonjour nianiania3,
    C'est un bon début, il faut maintenant ajouter le regroupement sur LIEN et additionner toutes les expressions.
    Je te livre le code corrigé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Comparaison.LIEN, Sum(IIf([L1_Expr1001]="OK",1,0)) AS [écart L1], Sum(IIf([M1_Expr1001]="OK",1,0)) AS [écart M1], Sum(IIf([Me1_Expr1001]="OK",1,0)) AS [écart Me1], Sum(IIf([J1_Expr1001]="OK",1,0)) AS [écart J1], Sum(IIf([V1_Expr1001]="OK",1,0)) AS [écart V1], Sum(IIf([S1_Expr1001]="OK",1,0)) AS [écart S1], Sum(IIf([D1_Expr1001]="OK",1,0)) AS [écart D1], Sum(IIf([L2_Expr1001]="OK",1,0)) AS [écart L2], Sum(IIf([M2_Expr1001]="OK",1,0)) AS [écart M2], Sum(IIf([Me2_Expr1001]="OK",1,0)) AS [écart Me2], Sum(IIf([J2_Expr1001]="OK",1,0)) AS [écart J2], Sum(IIf([V2_Expr1001]="OK",1,0)) AS [écart V2], Sum(IIf([S2_Expr1001]="OK",1,0)) AS [écart S2], Sum(IIf([D2_Expr1001]="OK",1,0)) AS [écart D2]
    FROM Comparaison
    GROUP BY Comparaison.LIEN;
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Eleveur de chèvres dans le Vercors
    Inscrit en
    Mai 2017
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Eleveur de chèvres dans le Vercors

    Informations forums :
    Inscription : Mai 2017
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    C'est bon j'ai trouvé aussi, mais juste qu'en on croit trouver la solution et ben y en a encore... , ça me donne ça:
    Nom : Capture.JPG
Affichages : 137
Taille : 16,5 Ko

    avec pour code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT R_écarts_OK.LIEN, [écart L1]+[écart M1]+[écart Me1]+[écart J1]+[écart V1]+[écart S1]+[écart D1]+[écart L2]+[écart M2]+[écart Me2]+[écart J2]+[écart V2]+[écart S2]+[écart D2] AS écart_OK
    FROM R_écarts_OK;
    Quelqu'un saurait comment obtenir une somme et pas une succession de 1 à la c*n? Oui ça commence à me gaver...

    Merci d'avance !

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Eleveur de chèvres dans le Vercors
    Inscrit en
    Mai 2017
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Eleveur de chèvres dans le Vercors

    Informations forums :
    Inscription : Mai 2017
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Merci de ta réponse, ça me donne ça comme table:
    Nom : Capture.JPG
Affichages : 128
Taille : 25,3 Ko

    Du coup j'essaye de mixer ça avec ma somme, comme ta table me donne des chiffres là il ne devrait plus me faire une succession de 1,
    j'essaye et je vous dis quoi

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Eleveur de chèvres dans le Vercors
    Inscrit en
    Mai 2017
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Eleveur de chèvres dans le Vercors

    Informations forums :
    Inscription : Mai 2017
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Nickel, ça marche! Merci pour l'idée d'utiliser les 0 au lieu de ' ' , j'aurais encore passer des heures à chercher des conversions de format -_- .
    Du coup ça me donne ça:
    Nom : Capture.JPG
Affichages : 129
Taille : 15,4 Ko

    Merci beaucoup !

    A très vite ! (dès qu'enfin je résous un truc, je bloque sur autre chose -_-' )

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 728
    Points : 14 742
    Points
    14 742
    Par défaut
    Tu peux copier/coller le code tel que je l'ai posté, il fonctionne comme tu le souhaites.
    Je te le reposte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Comparaison.LIEN, Sum(IIf([L1_Expr1001]="OK",1,0)) AS [écart L1], Sum(IIf([M1_Expr1001]="OK",1,0)) AS [écart M1], Sum(IIf([Me1_Expr1001]="OK",1,0)) AS [écart Me1], Sum(IIf([J1_Expr1001]="OK",1,0)) AS [écart J1], Sum(IIf([V1_Expr1001]="OK",1,0)) AS [écart V1], Sum(IIf([S1_Expr1001]="OK",1,0)) AS [écart S1], Sum(IIf([D1_Expr1001]="OK",1,0)) AS [écart D1], Sum(IIf([L2_Expr1001]="OK",1,0)) AS [écart L2], Sum(IIf([M2_Expr1001]="OK",1,0)) AS [écart M2], Sum(IIf([Me2_Expr1001]="OK",1,0)) AS [écart Me2], Sum(IIf([J2_Expr1001]="OK",1,0)) AS [écart J2], Sum(IIf([V2_Expr1001]="OK",1,0)) AS [écart V2], Sum(IIf([S2_Expr1001]="OK",1,0)) AS [écart S2], Sum(IIf([D2_Expr1001]="OK",1,0)) AS [écart D2]
    FROM Comparaison
    GROUP BY Comparaison.LIEN;
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 728
    Points : 14 742
    Points
    14 742
    Par défaut
    OK, c'est super.
    Des grosses bises à tes biquettes !
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

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

Discussions similaires

  1. Expression reguliere dans un enregistrement
    Par frizby dans le forum Requêtes
    Réponses: 0
    Dernier message: 16/06/2008, 12h34
  2. Réponses: 16
    Dernier message: 25/03/2007, 09h56
  3. Réponses: 5
    Dernier message: 30/10/2006, 13h59
  4. Réponses: 11
    Dernier message: 01/08/2006, 05h15
  5. Réponses: 1
    Dernier message: 03/02/2006, 12h35

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