Comptage sélectif d'enregistrements dans une requète.
11 réponses
IlEstOuLeYouki
Bonjour,
Mes recherches sur le net sont infructueuses, aussi je me tourne vers vous.
Je vais prendre un exemple qui puisse parler aux informaticiens :
J'ai une table RESEAUX avec les champs (principaux) :
Nom_Reseau - Code_Reseau -
La clef est sur Nom Reseau.
J'ai une seconde Table SOUS-RESEAUX avec les champs (principaux) :
Nom_sous_reseau - Reseau - Utilisateur
La clef est sur Nom_sous_Reseau.
J'ai une relation de 1 à N de RESEAUX. à SOUS_RESEAUX par les champs
"Nom_Reseau " & "Reseau".
Et voilà enfin le problème :
Je fais une requète avec Nom_Reseau, Nombre_Utilisateurs
Mais il me faudrait sur CHAQUE ligne le nombre d'utilisateurs qui
correspondent au champs "Nom_Reseau" de la dite ligne, dans
Nombre_Utilisateur...
Dit autrement, il faudrait dans ma requète un champs qui n'existe sur aucune
table et qui correspond à un comptage d'enregistrement sélectif d'aprés le
1er champs de la ligne.
Mes recherches sur le net sont infructueuses, aussi je me tourne vers vous. Je vais prendre un exemple qui puisse parler aux informaticiens : J'ai une table RESEAUX avec les champs (principaux) : Nom_Reseau - Code_Reseau - La clef est sur Nom Reseau. J'ai une seconde Table SOUS-RESEAUX avec les champs (principaux) : Nom_sous_reseau - Reseau - Utilisateur La clef est sur Nom_sous_Reseau. J'ai une relation de 1 à N de RESEAUX. à SOUS_RESEAUX par les champ s "Nom_Reseau " & "Reseau".
Et voilà enfin le problème : Je fais une requète avec Nom_Reseau, Nombre_Utilisateurs Mais il me faudrait sur CHAQUE ligne le nombre d'utilisateurs qui correspondent au champs "Nom_Reseau" de la dite ligne, dans Nombre_Utilisateur...
Dit autrement, il faudrait dans ma requète un champs qui n'existe sur aucune table et qui correspond à un comptage d'enregistrement sélec tif d'aprés le 1er champs de la ligne.
Table SOUS_RESEAUX : Sreseau1 - Reseau2 - Martin Sreseau3 - Reseau1 - Dupont Sreseau4 - Reseau2 - Martin Sreseau5 - Reseau2 - Martin
Ma requète devrait correspondre à :
Reseau1 - 1 Reseau2 - 3 Reseau3 - 0
J'espère avoir été clair et vous remercie d'avance pour votre aid e PS : je préfèrerais du SQL mais bon, je peux faire l'effort de mett re du code.
Cordialement.
Bonjour,
Oh la, avec juste sous la main le clavier et l'écran, on va voir ce que ça donne.
Je verrais bien quelque chose comme
SELECT Reseau, Count(*) FROM SOUS_RESEAUX GROUP BY Reseau
IlEstOuLeYouki a écrit, le 21/05/2011 12:18 :
Bonjour,
Mes recherches sur le net sont infructueuses, aussi je me tourne vers
vous. Je vais prendre un exemple qui puisse parler aux informaticiens :
J'ai une table RESEAUX avec les champs (principaux) :
Nom_Reseau - Code_Reseau -
La clef est sur Nom Reseau.
J'ai une seconde Table SOUS-RESEAUX avec les champs (principaux) :
Nom_sous_reseau - Reseau - Utilisateur
La clef est sur Nom_sous_Reseau.
J'ai une relation de 1 à N de RESEAUX. à SOUS_RESEAUX par les champ s
"Nom_Reseau " & "Reseau".
Et voilà enfin le problème :
Je fais une requète avec Nom_Reseau, Nombre_Utilisateurs
Mais il me faudrait sur CHAQUE ligne le nombre d'utilisateurs qui
correspondent au champs "Nom_Reseau" de la dite ligne, dans
Nombre_Utilisateur...
Dit autrement, il faudrait dans ma requète un champs qui n'existe sur
aucune table et qui correspond à un comptage d'enregistrement sélec tif
d'aprés le 1er champs de la ligne.
Mes recherches sur le net sont infructueuses, aussi je me tourne vers vous. Je vais prendre un exemple qui puisse parler aux informaticiens : J'ai une table RESEAUX avec les champs (principaux) : Nom_Reseau - Code_Reseau - La clef est sur Nom Reseau. J'ai une seconde Table SOUS-RESEAUX avec les champs (principaux) : Nom_sous_reseau - Reseau - Utilisateur La clef est sur Nom_sous_Reseau. J'ai une relation de 1 à N de RESEAUX. à SOUS_RESEAUX par les champ s "Nom_Reseau " & "Reseau".
Et voilà enfin le problème : Je fais une requète avec Nom_Reseau, Nombre_Utilisateurs Mais il me faudrait sur CHAQUE ligne le nombre d'utilisateurs qui correspondent au champs "Nom_Reseau" de la dite ligne, dans Nombre_Utilisateur...
Dit autrement, il faudrait dans ma requète un champs qui n'existe sur aucune table et qui correspond à un comptage d'enregistrement sélec tif d'aprés le 1er champs de la ligne.
SELECT DISTINCTROW RESEAUX.Nom_Reseau, Count([SOUS-RESEAUX].Utilisateur) AS CompteDeUtilisateur FROM RESEAUX LEFT JOIN [SOUS-RESEAUX] ON RESEAUX.Nom_Reseau = [SOUS-RESEAUX].Reseau GROUP BY RESEAUX.Nom_Reseau HAVING ((RESEAUX.Nom_Reseau Is Not Null));
Cordialement
Le 21/05/2011 12:18, IlEstOuLeYouki a écrit :
Bonjour,
Mes recherches sur le net sont infructueuses, aussi je me tourne vers vous. Je vais prendre un exemple qui puisse parler aux informaticiens : J'ai une table RESEAUX avec les champs (principaux) : Nom_Reseau - Code_Reseau - La clef est sur Nom Reseau. J'ai une seconde Table SOUS-RESEAUX avec les champs (principaux) : Nom_sous_reseau - Reseau - Utilisateur La clef est sur Nom_sous_Reseau. J'ai une relation de 1 à N de RESEAUX. à SOUS_RESEAUX par les champs "Nom_Reseau " & "Reseau".
Et voilà enfin le problème : Je fais une requète avec Nom_Reseau, Nombre_Utilisateurs Mais il me faudrait sur CHAQUE ligne le nombre d'utilisateurs qui correspondent au champs "Nom_Reseau" de la dite ligne, dans Nombre_Utilisateur...
Dit autrement, il faudrait dans ma requète un champs qui n'existe sur aucune table et qui correspond à un comptage d'enregistrement sélectif d'aprés le 1er champs de la ligne.
Table SOUS_RESEAUX : Sreseau1 - Reseau2 - Martin Sreseau3 - Reseau1 - Dupont Sreseau4 - Reseau2 - Martin Sreseau5 - Reseau2 - Martin
Ma requète devrait correspondre à :
Reseau1 - 1 Reseau2 - 3 Reseau3 - 0
J'espère avoir été clair et vous remercie d'avance pour votre aide PS : je préfèrerais du SQL mais bon, je peux faire l'effort de mettre du code.
Cordialement.
Bonjour
SELECT DISTINCTROW RESEAUX.Nom_Reseau, Count([SOUS-RESEAUX].Utilisateur)
AS CompteDeUtilisateur
FROM RESEAUX LEFT JOIN [SOUS-RESEAUX] ON RESEAUX.Nom_Reseau =
[SOUS-RESEAUX].Reseau
GROUP BY RESEAUX.Nom_Reseau
HAVING ((RESEAUX.Nom_Reseau Is Not Null));
Cordialement
Le 21/05/2011 12:18, IlEstOuLeYouki a écrit :
Bonjour,
Mes recherches sur le net sont infructueuses, aussi je me tourne vers
vous. Je vais prendre un exemple qui puisse parler aux informaticiens :
J'ai une table RESEAUX avec les champs (principaux) :
Nom_Reseau - Code_Reseau -
La clef est sur Nom Reseau.
J'ai une seconde Table SOUS-RESEAUX avec les champs (principaux) :
Nom_sous_reseau - Reseau - Utilisateur
La clef est sur Nom_sous_Reseau.
J'ai une relation de 1 à N de RESEAUX. à SOUS_RESEAUX par les champs
"Nom_Reseau " & "Reseau".
Et voilà enfin le problème :
Je fais une requète avec Nom_Reseau, Nombre_Utilisateurs
Mais il me faudrait sur CHAQUE ligne le nombre d'utilisateurs qui
correspondent au champs "Nom_Reseau" de la dite ligne, dans
Nombre_Utilisateur...
Dit autrement, il faudrait dans ma requète un champs qui n'existe sur
aucune table et qui correspond à un comptage d'enregistrement sélectif
d'aprés le 1er champs de la ligne.
SELECT DISTINCTROW RESEAUX.Nom_Reseau, Count([SOUS-RESEAUX].Utilisateur) AS CompteDeUtilisateur FROM RESEAUX LEFT JOIN [SOUS-RESEAUX] ON RESEAUX.Nom_Reseau = [SOUS-RESEAUX].Reseau GROUP BY RESEAUX.Nom_Reseau HAVING ((RESEAUX.Nom_Reseau Is Not Null));
Cordialement
Le 21/05/2011 12:18, IlEstOuLeYouki a écrit :
Bonjour,
Mes recherches sur le net sont infructueuses, aussi je me tourne vers vous. Je vais prendre un exemple qui puisse parler aux informaticiens : J'ai une table RESEAUX avec les champs (principaux) : Nom_Reseau - Code_Reseau - La clef est sur Nom Reseau. J'ai une seconde Table SOUS-RESEAUX avec les champs (principaux) : Nom_sous_reseau - Reseau - Utilisateur La clef est sur Nom_sous_Reseau. J'ai une relation de 1 à N de RESEAUX. à SOUS_RESEAUX par les champs "Nom_Reseau " & "Reseau".
Et voilà enfin le problème : Je fais une requète avec Nom_Reseau, Nombre_Utilisateurs Mais il me faudrait sur CHAQUE ligne le nombre d'utilisateurs qui correspondent au champs "Nom_Reseau" de la dite ligne, dans Nombre_Utilisateur...
Dit autrement, il faudrait dans ma requète un champs qui n'existe sur aucune table et qui correspond à un comptage d'enregistrement sélectif d'aprés le 1er champs de la ligne.
C'est que tu as dû désactiver l'affichage des informations par Application.DisplayAlerts = False, sinon on en saurait plus.
Voilà un copier-coller d'un test que je viens de faire sous SQL Server.
SELECT tabTest.tstCol1, COUNT(*) FROM [Test].[dbo].[tabTest] GROUP BY tabTest.tstCol1
et j'ai bien deux colonnes, avec tstCol1 dans la première, et le nombre d'enregistrements concernés dans la deuxième.
Cela étant Jeff pourra faire des tests plus appropriés ...
Gloops
Bonjour,
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à b aser le critère de groupage sur le code de réseau, plutôt que son intitu lé ?
En définitive, le but est d'afficher le nombre de sous-réseaux pour chaque code de réseau, quel que soit l'intitulé qu'on trouve dans l'autre table, non ?
Ensuite, ça peut effectivement être intéressant d'effectuer la join ture si on veut aussi afficher l'intitulé.
___________________________________ Jeff a écrit, le 23/05/2011 15:38 :
Bonjour
SELECT DISTINCTROW RESEAUX.Nom_Reseau, Count([SOUS-RESEAUX].Utilisateur ) AS CompteDeUtilisateur FROM RESEAUX LEFT JOIN [SOUS-RESEAUX] ON RESEAUX.Nom_Reseau = [SOUS-RESEAUX].Reseau GROUP BY RESEAUX.Nom_Reseau HAVING ((RESEAUX.Nom_Reseau Is Not Null));
Cordialement
Bonjour,
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à b aser
le critère de groupage sur le code de réseau, plutôt que son intitu lé ?
En définitive, le but est d'afficher le nombre de sous-réseaux pour
chaque code de réseau, quel que soit l'intitulé qu'on trouve dans
l'autre table, non ?
Ensuite, ça peut effectivement être intéressant d'effectuer la join ture
si on veut aussi afficher l'intitulé.
___________________________________
Jeff a écrit, le 23/05/2011 15:38 :
Bonjour
SELECT DISTINCTROW RESEAUX.Nom_Reseau, Count([SOUS-RESEAUX].Utilisateur )
AS CompteDeUtilisateur
FROM RESEAUX LEFT JOIN [SOUS-RESEAUX] ON RESEAUX.Nom_Reseau =
[SOUS-RESEAUX].Reseau
GROUP BY RESEAUX.Nom_Reseau
HAVING ((RESEAUX.Nom_Reseau Is Not Null));
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à b aser le critère de groupage sur le code de réseau, plutôt que son intitu lé ?
En définitive, le but est d'afficher le nombre de sous-réseaux pour chaque code de réseau, quel que soit l'intitulé qu'on trouve dans l'autre table, non ?
Ensuite, ça peut effectivement être intéressant d'effectuer la join ture si on veut aussi afficher l'intitulé.
___________________________________ Jeff a écrit, le 23/05/2011 15:38 :
Bonjour
SELECT DISTINCTROW RESEAUX.Nom_Reseau, Count([SOUS-RESEAUX].Utilisateur ) AS CompteDeUtilisateur FROM RESEAUX LEFT JOIN [SOUS-RESEAUX] ON RESEAUX.Nom_Reseau = [SOUS-RESEAUX].Reseau GROUP BY RESEAUX.Nom_Reseau HAVING ((RESEAUX.Nom_Reseau Is Not Null));
Cordialement
db
Le 23/05/2011 16:39, Gloops a écrit :
Bonjour,
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à baser le critère de groupage sur le code de réseau, plutôt que son intitulé ?
En définitive, le but est d'afficher le nombre de sous-réseaux pour chaque code de réseau, quel que soit l'intitulé qu'on trouve dans l'autre table, non ?
Ensuite, ça peut effectivement être intéressant d'effectuer la jointure si on veut aussi afficher l'intitulé.
Bonsoir,
C'est surtout que la jointure externe devrait permettre de lister aussi les réseaux sans sous-réseau, avec 0 comme nombre de sous-réseaux, ce qui était, il me semble, la demande initiale.
db
Le 23/05/2011 16:39, Gloops a écrit :
Bonjour,
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à baser
le critère de groupage sur le code de réseau, plutôt que son intitulé ?
En définitive, le but est d'afficher le nombre de sous-réseaux pour
chaque code de réseau, quel que soit l'intitulé qu'on trouve dans
l'autre table, non ?
Ensuite, ça peut effectivement être intéressant d'effectuer la jointure
si on veut aussi afficher l'intitulé.
Bonsoir,
C'est surtout que la jointure externe devrait permettre de lister aussi
les réseaux sans sous-réseau, avec 0 comme nombre de sous-réseaux, ce
qui était, il me semble, la demande initiale.
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à baser le critère de groupage sur le code de réseau, plutôt que son intitulé ?
En définitive, le but est d'afficher le nombre de sous-réseaux pour chaque code de réseau, quel que soit l'intitulé qu'on trouve dans l'autre table, non ?
Ensuite, ça peut effectivement être intéressant d'effectuer la jointure si on veut aussi afficher l'intitulé.
Bonsoir,
C'est surtout que la jointure externe devrait permettre de lister aussi les réseaux sans sous-réseau, avec 0 comme nombre de sous-réseaux, ce qui était, il me semble, la demande initiale.
db
Gloops
db a écrit, le 23/05/2011 17:59 :
Le 23/05/2011 16:39, Gloops a écrit :
Bonjour,
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à baser le critère de groupage sur le code de réseau, plutôt que son int itulé ?
En définitive, le but est d'afficher le nombre de sous-réseaux pou r chaque code de réseau, quel que soit l'intitulé qu'on trouve dans l'autre table, non ?
Ensuite, ça peut effectivement être intéressant d'effectuer la j ointure si on veut aussi afficher l'intitulé.
Bonsoir,
C'est surtout que la jointure externe devrait permettre de lister aussi les réseaux sans sous-réseau, avec 0 comme nombre de sous-réseaux , ce qui était, il me semble, la demande initiale.
db
Ah, c'est vrai que ce point-là, je l'ai loupé. D'où l'intérêt de poser des questions ...
db a écrit, le 23/05/2011 17:59 :
Le 23/05/2011 16:39, Gloops a écrit :
Bonjour,
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à baser
le critère de groupage sur le code de réseau, plutôt que son int itulé ?
En définitive, le but est d'afficher le nombre de sous-réseaux pou r
chaque code de réseau, quel que soit l'intitulé qu'on trouve dans
l'autre table, non ?
Ensuite, ça peut effectivement être intéressant d'effectuer la j ointure
si on veut aussi afficher l'intitulé.
Bonsoir,
C'est surtout que la jointure externe devrait permettre de lister aussi
les réseaux sans sous-réseau, avec 0 comme nombre de sous-réseaux , ce
qui était, il me semble, la demande initiale.
db
Ah, c'est vrai que ce point-là, je l'ai loupé.
D'où l'intérêt de poser des questions ...
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à baser le critère de groupage sur le code de réseau, plutôt que son int itulé ?
En définitive, le but est d'afficher le nombre de sous-réseaux pou r chaque code de réseau, quel que soit l'intitulé qu'on trouve dans l'autre table, non ?
Ensuite, ça peut effectivement être intéressant d'effectuer la j ointure si on veut aussi afficher l'intitulé.
Bonsoir,
C'est surtout que la jointure externe devrait permettre de lister aussi les réseaux sans sous-réseau, avec 0 comme nombre de sous-réseaux , ce qui était, il me semble, la demande initiale.
db
Ah, c'est vrai que ce point-là, je l'ai loupé. D'où l'intérêt de poser des questions ...
Jeff
Le 23/05/2011 16:35, Gloops a écrit :
Bonjour
Cela étant Jeff pourra faire des tests plus appropriés ...
Je ne comprends pas la remarque "tests plus appropriés" ...
Le 23/05/2011 16:35, Gloops a écrit :
Bonjour
Cela étant Jeff pourra faire des tests plus appropriés ...
Je ne comprends pas la remarque "tests plus appropriés" ...
Cela étant Jeff pourra faire des tests plus appropriés ...
Je ne comprends pas la remarque "tests plus appropriés" ...
Jeff
Le 23/05/2011 16:39, Gloops a écrit :
Bonjour,
Bonjour
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à baser le critère de groupage sur le code de réseau, plutôt que son intitulé ?
tu peux faire le groupage sur le code mais si tu ne mets pas le nom du réseau dans la requête il faudra en faire une seconde pour obtenir la correspondance entre le code réseau et son nom
En définitive, le but est d'afficher le nombre de sous-réseaux pour chaque code de réseau, quel que soit l'intitulé qu'on trouve dans l'autre table, non ?
Quand tu dis intitulé, tu parles de quel champ ?
Tu peux aussi faire :
SELECT DISTINCTROW RESEAUX.Nom_Reseau, Count([SOUS-RESEAUX].Reseau) AS CompteDeReseau FROM RESEAUX LEFT JOIN [SOUS-RESEAUX] ON RESEAUX.Nom_Reseau = [SOUS-RESEAUX].Reseau GROUP BY RESEAUX.Nom_Reseau HAVING ((RESEAUX.Nom_Reseau Is Not Null));
Dans ce cas, le nom d'utilisateur ne rentre pas en ligne de compte.
Mais je ne sais pas si j'ai bien tout compris ...
Cordialement
Le 23/05/2011 16:39, Gloops a écrit :
Bonjour,
Bonjour
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à baser
le critère de groupage sur le code de réseau, plutôt que son intitulé ?
tu peux faire le groupage sur le code mais si tu ne mets pas
le nom du réseau dans la requête il faudra en faire une seconde
pour obtenir la correspondance entre le code réseau et son nom
En définitive, le but est d'afficher le nombre de sous-réseaux pour
chaque code de réseau, quel que soit l'intitulé qu'on trouve dans
l'autre table, non ?
Quand tu dis intitulé, tu parles de quel champ ?
Tu peux aussi faire :
SELECT DISTINCTROW RESEAUX.Nom_Reseau, Count([SOUS-RESEAUX].Reseau) AS
CompteDeReseau
FROM RESEAUX LEFT JOIN [SOUS-RESEAUX] ON RESEAUX.Nom_Reseau =
[SOUS-RESEAUX].Reseau
GROUP BY RESEAUX.Nom_Reseau
HAVING ((RESEAUX.Nom_Reseau Is Not Null));
Dans ce cas, le nom d'utilisateur ne rentre pas en ligne de compte.
Oui, très bien, mais saurais-tu dire pourquoi on ne réussit pas à baser le critère de groupage sur le code de réseau, plutôt que son intitulé ?
tu peux faire le groupage sur le code mais si tu ne mets pas le nom du réseau dans la requête il faudra en faire une seconde pour obtenir la correspondance entre le code réseau et son nom
En définitive, le but est d'afficher le nombre de sous-réseaux pour chaque code de réseau, quel que soit l'intitulé qu'on trouve dans l'autre table, non ?
Quand tu dis intitulé, tu parles de quel champ ?
Tu peux aussi faire :
SELECT DISTINCTROW RESEAUX.Nom_Reseau, Count([SOUS-RESEAUX].Reseau) AS CompteDeReseau FROM RESEAUX LEFT JOIN [SOUS-RESEAUX] ON RESEAUX.Nom_Reseau = [SOUS-RESEAUX].Reseau GROUP BY RESEAUX.Nom_Reseau HAVING ((RESEAUX.Nom_Reseau Is Not Null));
Dans ce cas, le nom d'utilisateur ne rentre pas en ligne de compte.
Mais je ne sais pas si j'ai bien tout compris ...
Cordialement
Gloops
Jeff a écrit, le 23/05/2011 19:10 :
Le 23/05/2011 16:35, Gloops a écrit :
Bonjour
Cela étant Jeff pourra faire des tests plus appropriés ...
Je ne comprends pas la remarque "tests plus appropriés" ...
J'ai fait mes tests sous SQL Server ... ;)
Jeff a écrit, le 23/05/2011 19:10 :
Le 23/05/2011 16:35, Gloops a écrit :
Bonjour
Cela étant Jeff pourra faire des tests plus appropriés ...
Je ne comprends pas la remarque "tests plus appropriés" ...