Comptage avec 0 pour valeurs non trouvées
Fermé
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
-
25 juin 2015 à 21:26
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 - 28 juil. 2015 à 14:20
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 - 28 juil. 2015 à 14:20
A voir également:
- Comptage avec 0 pour valeurs non trouvées
- Qualité de signal parabole 0 - Forum TNT / Satellite / Réception
- Numéro de téléphone excel 0 - Guide
- Erreur 0 free - Forum Samsung
- Acpi\int33a0\0 ✓ - Forum Pilotes (drivers)
- Comment faire un 0 barré sur telephone ✓ - Forum Windows
13 réponses
Bonjour
Si vous avez les tables comme celles-ci
tables participants
id_participant
nom_participant
pays
table textes
id_texte
nom_texte
id_participant
Je vous propose cette solution.
Si vous avez les tables comme celles-ci
tables participants
id_participant
nom_participant
pays
table textes
id_texte
nom_texte
id_participant
Je vous propose cette solution.
SELECT participants.pays, COUNT( textes.nom_texte )
FROM participants, textes
WHERE participants.id_participant = textes.id_participant
GROUP BY participants.pays
Bonjour,
Merci de ta réponse super rapide.
J'ai donc inséré cette requête:
----
SELECT participants.pays, COUNT(textes.texte)
FROM participants, textes
WHERE Participants.identité=Textes.identité
GROUP BY participants.pays;
----
Mais j'ai ce message d'erreur: "incohérence de type dans une expression"
Je pense que cela vient d ece que le champ "identité" est en format "texte" dans la table "participants", alors qu'il est en format numérique dans la table "Textes", où il se gère par une zone de liste déroulante depuis la table"Participants"
Tu as un avis ?
Merci d'av.
Roland
Merci de ta réponse super rapide.
J'ai donc inséré cette requête:
----
SELECT participants.pays, COUNT(textes.texte)
FROM participants, textes
WHERE Participants.identité=Textes.identité
GROUP BY participants.pays;
----
Mais j'ai ce message d'erreur: "incohérence de type dans une expression"
Je pense que cela vient d ece que le champ "identité" est en format "texte" dans la table "participants", alors qu'il est en format numérique dans la table "Textes", où il se gère par une zone de liste déroulante depuis la table"Participants"
Tu as un avis ?
Merci d'av.
Roland
Bonjour,
Merci, Delphine, de votre gentillesse. Mais comment "corriger cela"? Je ne peux pas changer la définition des deux champs "identité" puisque, dans la table "Textes," les enregistrements se créent en choisissant dans une zone de liste le participant depuis la table 1.
Il doit y avoir une autre syntaxe de la requête. Mais je ne la trouve pas.
Merci encore
Roland
Merci, Delphine, de votre gentillesse. Mais comment "corriger cela"? Je ne peux pas changer la définition des deux champs "identité" puisque, dans la table "Textes," les enregistrements se créent en choisissant dans une zone de liste le participant depuis la table 1.
Il doit y avoir une autre syntaxe de la requête. Mais je ne la trouve pas.
Merci encore
Roland
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
24
27 juin 2015 à 07:51
27 juin 2015 à 07:51
Re-bonjour,
Excusez-moi. J'ai eu l'idée sitôt après vous avoir répondu: il me suffisait de comparer "Textes-identité" avec "Participants.n°", c'est à dire avec le numéro clé d'enregistrement.
SELECT participants.pays, COUNT(textes.texte)
FROM participants, textes
WHERE Participants.N°=Textes.identité
GROUP BY participants.pays;
La requête ainsi définie fonctionne bien. Mais je n'ai pas le résultat que je voudrais, à savoir "tous les pays" de la table participants avec 0 en comptage s'ils n'ont auun texte en table "Textes".
Pour l'instant je n'obtiens que le seul pays représenté dans ma table textes, mais pas les autres qui ne le sont pas encore.
Bien cordialement,
Roland
Excusez-moi. J'ai eu l'idée sitôt après vous avoir répondu: il me suffisait de comparer "Textes-identité" avec "Participants.n°", c'est à dire avec le numéro clé d'enregistrement.
SELECT participants.pays, COUNT(textes.texte)
FROM participants, textes
WHERE Participants.N°=Textes.identité
GROUP BY participants.pays;
La requête ainsi définie fonctionne bien. Mais je n'ai pas le résultat que je voudrais, à savoir "tous les pays" de la table participants avec 0 en comptage s'ils n'ont auun texte en table "Textes".
Pour l'instant je n'obtiens que le seul pays représenté dans ma table textes, mais pas les autres qui ne le sont pas encore.
Bien cordialement,
Roland
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
24
29 juin 2015 à 15:20
29 juin 2015 à 15:20
Bonjour Delphine,
Excusez-moi de ne pas vous avoir répondu plus tôt, mais j'étais "loin" de mon ordi et de cette appli qui m'est "perso" Mais je vous remercie encore de votre réponse bien sympa.
Pour répondre à votre "si vous voulez n'afficher que les pays pour lesquels le count est égal à 0...",
je vous précise que ma demande est d'afficher TOUS les pays de la table 1 ("Participants") avec, soit 0 s'ils n'ont pas de textes en table 2, soit le nombre de textes qui s'y trouvent. Exemple:
Canada 0
France 10
Brésil 6
Italie 0
Belgique 9
Encore merci
Roland
-----------------------------------------------
Excusez-moi de ne pas vous avoir répondu plus tôt, mais j'étais "loin" de mon ordi et de cette appli qui m'est "perso" Mais je vous remercie encore de votre réponse bien sympa.
Pour répondre à votre "si vous voulez n'afficher que les pays pour lesquels le count est égal à 0...",
je vous précise que ma demande est d'afficher TOUS les pays de la table 1 ("Participants") avec, soit 0 s'ils n'ont pas de textes en table 2, soit le nombre de textes qui s'y trouvent. Exemple:
Canada 0
France 10
Brésil 6
Italie 0
Belgique 9
Encore merci
Roland
-----------------------------------------------
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
24
11 juil. 2015 à 07:49
11 juil. 2015 à 07:49
Bonjour,
Delphine, où êtes-vous ? Sans doute, partie en vacances ? Je confirme ma demande, pour quelqu'un d 'autre qui serait là pour me lire : comment faire un comptage access Vba en incluant, dans les résultats, les valeurs égales à zéro ? Dans une table 1, des individus avec pour chacun un pays. Dans une table 2, des textes par participants, Je voudrais obtenir pour TOUS LES PAYS de la table1, le nombre de textes de la table 2, avec un zéro si aucun texte trouvé pour un pays X ou Y.
Merci d'avance.
Roland
Delphine, où êtes-vous ? Sans doute, partie en vacances ? Je confirme ma demande, pour quelqu'un d 'autre qui serait là pour me lire : comment faire un comptage access Vba en incluant, dans les résultats, les valeurs égales à zéro ? Dans une table 1, des individus avec pour chacun un pays. Dans une table 2, des textes par participants, Je voudrais obtenir pour TOUS LES PAYS de la table1, le nombre de textes de la table 2, avec un zéro si aucun texte trouvé pour un pays X ou Y.
Merci d'avance.
Roland
castours
>
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
13 juil. 2015 à 09:27
13 juil. 2015 à 09:27
bonjour
pour t'aider et mieux comprendre ton probleme, peux tu mettre ta base sur le site avec sur c_joint.com
pour t'aider et mieux comprendre ton probleme, peux tu mettre ta base sur le site avec sur c_joint.com
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
24
13 juil. 2015 à 10:19
13 juil. 2015 à 10:19
Merci, Castours, de venir m'aider et de pencher sur mon problème
Voici l'adresse du lien cjoint https://www.cjoint.com/c/EGninqyoVQS
Ma demande conceren le formulaire synthèse sue le quel je voudrais voir figurer un comptage des textes par pays, mais pour TOUS LES PAYS de la table "participants", en incluant donc les pays pour lesquels aucun texte n'a encore été reçu.
Par exemple, je voudrais obtenir un tableau comme suit:
allemagne... 0
italie... 1
Grêce... 10
Maroc... 0
France .. 23
Merci encore de tes lumières
Roland
Voici l'adresse du lien cjoint https://www.cjoint.com/c/EGninqyoVQS
Ma demande conceren le formulaire synthèse sue le quel je voudrais voir figurer un comptage des textes par pays, mais pour TOUS LES PAYS de la table "participants", en incluant donc les pays pour lesquels aucun texte n'a encore été reçu.
Par exemple, je voudrais obtenir un tableau comme suit:
allemagne... 0
italie... 1
Grêce... 10
Maroc... 0
France .. 23
Merci encore de tes lumières
Roland
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
24
17 juil. 2015 à 19:25
17 juil. 2015 à 19:25
Bien reçu ma base, Castours ?
Roland
Roland
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
24
27 juil. 2015 à 19:12
27 juil. 2015 à 19:12
Bonjour
Apparememnt, ma demande fait sécher (ou fuir) les bonnes volontés qui m'y répondent. Après Delphine qui elle au moins est allée jusqu'à 2 ou 3 réponses, c'est Castours qui s'est dissous dans le silence sitôt après que je lui ai envoyé la base qu'il m'avait demandée !
Ma question serait-elle à ce point exceptionnelle ou .. diabolique ?
Roland -----
Apparememnt, ma demande fait sécher (ou fuir) les bonnes volontés qui m'y répondent. Après Delphine qui elle au moins est allée jusqu'à 2 ou 3 réponses, c'est Castours qui s'est dissous dans le silence sitôt après que je lui ai envoyé la base qu'il m'avait demandée !
Ma question serait-elle à ce point exceptionnelle ou .. diabolique ?
Roland -----
Bonjour,
L'habitude et la correction sur le forum est que lorsque une personne commence à répondre d'autre internaute ne vienne pas lui disputer la réponse, et le laisse mener à bien le dialogue.
Puisque tu restes en rade, je te propose ma solution.
Les 2 requêtes déjà proposées fonctionnent bien; il suffit alors de les faire tourner en même temps. Càd une requête Union
Attention: Elles doivent obligatoirement être saisies en mode SQL.
Pour ce faire, tu ouvres chacune des requêtes en mode SQL, et tu copies/colles l'une dernière l'autre.
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité GROUP BY participants.pays
UNION
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité HAVING COUNT(textes.texte) =0 GROUP BY participants.pays
Ainsi tu devrais avoir le résultat que tu souhaites.
Bonne suite
L'habitude et la correction sur le forum est que lorsque une personne commence à répondre d'autre internaute ne vienne pas lui disputer la réponse, et le laisse mener à bien le dialogue.
Puisque tu restes en rade, je te propose ma solution.
Les 2 requêtes déjà proposées fonctionnent bien; il suffit alors de les faire tourner en même temps. Càd une requête Union
Attention: Elles doivent obligatoirement être saisies en mode SQL.
Pour ce faire, tu ouvres chacune des requêtes en mode SQL, et tu copies/colles l'une dernière l'autre.
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité GROUP BY participants.pays
UNION
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité HAVING COUNT(textes.texte) =0 GROUP BY participants.pays
Ainsi tu devrais avoir le résultat que tu souhaites.
Bonne suite
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
24
Modifié par lecrol le 27/07/2015 à 21:54
Modifié par lecrol le 27/07/2015 à 21:54
Merci de ta réponse;
Tu te doutes que j'ai aussitôt essayé. La clause having semble devoir se placer après le "Group by", sinon Access me dit "erreur de syntaxe dans a clause having". C'est donc ce que j'ai fait.
Mais le résultat n'est pas encore le bon. J'ai la liste des seuls pays "avec textes", et pas autres (les "sans texte") et, curieusement, je n'ai pas le nombre de textes trouvés, alors que je l'ai bien si j'exécute la requête séparément. Si tu veux, je te renvoie ma base.
Merci encore
Roland
Tu te doutes que j'ai aussitôt essayé. La clause having semble devoir se placer après le "Group by", sinon Access me dit "erreur de syntaxe dans a clause having". C'est donc ce que j'ai fait.
Mais le résultat n'est pas encore le bon. J'ai la liste des seuls pays "avec textes", et pas autres (les "sans texte") et, curieusement, je n'ai pas le nombre de textes trouvés, alors que je l'ai bien si j'exécute la requête séparément. Si tu veux, je te renvoie ma base.
Merci encore
Roland
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
24
28 juil. 2015 à 11:54
28 juil. 2015 à 11:54
Bonjour
Mais c'est bien ce que j'ai fait, tu penses. Je te l'a
Mais c'est bien ce que j'ai fait, tu penses. Je te l'a
Je n'ai évidemment pas pu tester la base originelle.
Mais c'est vrai que j'ai oublié de préciser que pour faire fonctionner une requête Union, il est indispensable que les 2 requêtes réunies doivent être exactement identiques quant aux champs sélectionnés et dans le même ordre. Autrement dit, parfaitement superposables; seuls les résultats changent.
Ils faut donc s'assurer que les 2 fonctionnent correctement séparément avec les résultats attendus, et que ces résultats forment bien les mêmes champs, les mêmes colonnes et dans le même ordre.
Bonne suite
Mais c'est vrai que j'ai oublié de préciser que pour faire fonctionner une requête Union, il est indispensable que les 2 requêtes réunies doivent être exactement identiques quant aux champs sélectionnés et dans le même ordre. Autrement dit, parfaitement superposables; seuls les résultats changent.
Ils faut donc s'assurer que les 2 fonctionnent correctement séparément avec les résultats attendus, et que ces résultats forment bien les mêmes champs, les mêmes colonnes et dans le même ordre.
Bonne suite
Re...
Essaye :
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité HAVING COUNT(textes.texte) > 0 GROUP BY participants.pays
UNION
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité HAVING COUNT(textes.texte) = 0 GROUP BY participants.pays
Essaye :
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité HAVING COUNT(textes.texte) > 0 GROUP BY participants.pays
UNION
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité HAVING COUNT(textes.texte) = 0 GROUP BY participants.pays
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
24
>
Tessel75
28 juil. 2015 à 07:19
28 juil. 2015 à 07:19
Bonjour et encore merci de ta patience, Tessel 75
J'ai encore le message "erreur de syntaxe sur la clause having (sans autre explication)
Je ne l'ai plus si je place cette clause après la clause "Group By".
Mais le résultat est le même. Seuls ressortent les pays "avec textes".
En essayant chacune des requêtes séparément, je vérifie bien que la requête "count = 0" me donne un tableau vide. C'est là qu'est ne noeud du problème selon moi.
Cordialement,
Roland
Voici mon écriture:
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité GROUP BY participants.pays HAVING COUNT(textes.texte) > 0
UNION
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité GROUP BY participants.pays HAVING COUNT(textes.texte) = 0
J'ai encore le message "erreur de syntaxe sur la clause having (sans autre explication)
Je ne l'ai plus si je place cette clause après la clause "Group By".
Mais le résultat est le même. Seuls ressortent les pays "avec textes".
En essayant chacune des requêtes séparément, je vérifie bien que la requête "count = 0" me donne un tableau vide. C'est là qu'est ne noeud du problème selon moi.
Cordialement,
Roland
Voici mon écriture:
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité GROUP BY participants.pays HAVING COUNT(textes.texte) > 0
UNION
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité GROUP BY participants.pays HAVING COUNT(textes.texte) = 0
Je t'ai dit d'essayé les 2 requêtes isolément un à une. Ce n'est que quand tu es sûr que ça marche que tu fait "Union"
Mais le plus simple ou le plus facile est de concevoir les requêtes en mode graphique et de les passer en SQL seulement après. Comme ça tu apprends la syntaxe. Sinon tu vas ramer pendant des heures pour rien.
Bon courage.
Mais le plus simple ou le plus facile est de concevoir les requêtes en mode graphique et de les passer en SQL seulement après. Comme ça tu apprends la syntaxe. Sinon tu vas ramer pendant des heures pour rien.
Bon courage.
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
24
28 juil. 2015 à 11:58
28 juil. 2015 à 11:58
Bonjourn
Mais c'est bien ce que j'ai fait, tu t'en doutes. Comme je te l'ai dit dans mon message, j'ai essayé chacune des deux requêtes SEPAREMENT. Celle avec "count >0" fonctionne bien, Celle avec "count =0" me donne un résultat vide. Encore merci de m'aider comme tu le fais, gentiment et avec patience. On va y arriver !!
Roland
Mais c'est bien ce que j'ai fait, tu t'en doutes. Comme je te l'ai dit dans mon message, j'ai essayé chacune des deux requêtes SEPAREMENT. Celle avec "count >0" fonctionne bien, Celle avec "count =0" me donne un résultat vide. Encore merci de m'aider comme tu le fais, gentiment et avec patience. On va y arriver !!
Roland
Re...
J'ai repris ta base initiale.
D'abord, elle n'est pas anonymisée. C'est très dangereux parce qu'il y a des noms que je suppose réels et des N° de téléphone. C'est très moyen.
De plus les tables sont très mal construites et les liens ne sont pas construits sur des champs qui ne sont pas des champs d'identifiants. Alors je ne peux rien faire à moins de tout reconstruire.
Il faut que tu reprennes tout ça.
J'ai repris ta base initiale.
D'abord, elle n'est pas anonymisée. C'est très dangereux parce qu'il y a des noms que je suppose réels et des N° de téléphone. C'est très moyen.
De plus les tables sont très mal construites et les liens ne sont pas construits sur des champs qui ne sont pas des champs d'identifiants. Alors je ne peux rien faire à moins de tout reconstruire.
Il faut que tu reprennes tout ça.
lecrol
Messages postés
200
Date d'inscription
samedi 4 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2016
24
28 juil. 2015 à 14:20
28 juil. 2015 à 14:20
Bonjour,
Bon, tant pis pour moi. C'est pas de chance.
Mais il reste que la requête :
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité HAVING COUNT(textes.texte) > 0 GROUP BY participants.pays
écrite telle que, donne une "erreur de syntaxe".
Par contre écrite avec la clause "Group By avant la clause having
ELLE FONCTIONNE CORECTEMENT !
Quant à la requête
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité HAVING COUNT(textes.texte) = 0 GROUP BY participants.pays
elle ne donne qu'un résultat vide, même après aviir replacé la clause "having" après le Group by
Désolé
Roland
PS Bien sûr, détruis la base que je t'ai envoyée. Encore merci
.
Bon, tant pis pour moi. C'est pas de chance.
Mais il reste que la requête :
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité HAVING COUNT(textes.texte) > 0 GROUP BY participants.pays
écrite telle que, donne une "erreur de syntaxe".
Par contre écrite avec la clause "Group By avant la clause having
ELLE FONCTIONNE CORECTEMENT !
Quant à la requête
SELECT participants.pays, COUNT(textes.texte) FROM participants, textes WHERE Participants.N°=Textes.identité HAVING COUNT(textes.texte) = 0 GROUP BY participants.pays
elle ne donne qu'un résultat vide, même après aviir replacé la clause "having" après le Group by
Désolé
Roland
PS Bien sûr, détruis la base que je t'ai envoyée. Encore merci
.