OVH Cloud OVH Cloud

pb de comptage dans requete

2 réponses
Avatar
Txl
Bonjour

J'ai perdu la main !!!

J'ai une requete qui me sert de plan de table pour mon mariage (j'accepte
les cadeaux !!!) et je voudrais compter le nombre de gens par table :

SELECT tblinvite.table, tblinvite.nom, tblinvite.prenom, tblinvite.groupe,
Sum(tblinvite.table) AS SommeDetable
FROM tblinvite
GROUP BY tblinvite.table, tblinvite.nom, tblinvite.prenom,
tblinvite.groupe, tblinvite.confirme
HAVING (((tblinvite.confirme)=True))
ORDER BY tblinvite.table, tblinvite.groupe;


Evidemment le dernier champ de SELECT ne fonctionne pas, ca ne me calcule
pas la somme des gens par table.

Merci de votre aide et désolé pour le truc de base mais en ce moment je
n'ai pas la tete a réfléchir, il faut encore les faire parts, le
traiteur...enfin les trucs habituels

2 réponses

Avatar
Daniel Carollo
Bonjour nobody Txl!

Une remarque d'ordre pratique tout d'abord: developper une application pour
une seule utilisation (a moins que vous ne prevoyiez de vous marier
souvent?) ;-) est un peu exagere... J'aurais pense que quelques pages
dans un bloc-note et un crayon eussent ete plus appropries a la tache, mais
bon...

C'est quoi une somme de table?

A mon avis, il eut mieux valu utiliser un Count() pour avoir *le nombre* des
invites par table...
Par contre, si vous faites un regroupement par nom et prenom, il y a peu de
chance d'obtenir le nombre d'invites *par table*...

Pendant qu'on est dans les corrections, utiliser une clause HAVING est tres
gourmand en ressources, si la condition ne porte pas sur des champs
resultant d'un regroupement, il vaut mieux utiliser la clause WHERE.

La requete corrigee serait donc de la forme:
SELECT tblinvite.table, Count(tblinvite.table) AS NombreDInvites
FROM tblinvite
WHERE tblinvite.confirme
ORDER BY tblinvite.table;
pour avoir le nombre d'invites par table.

Pour avoir une liste rangee par table:
SELECT tblinvite.table, tblinvite.nom, tblinvite.prenom, tblinvite.groupe
FROM tblinvite
WHERE tblinvite.confirme
ORDER BY tblinvite.table, tblinvite.groupe;

En fin de compte, il serait preferable d'utiliser la derniere requete comme
source d'un etat (pour l'impression de la liste des convives par table, par
exemple), et de mettre le Count() dans le pied de groupe, ce qui evite de
generer deux requetes, mais bon, il n'y a rien d'obligatoire a cela, puisque
vous preferez passer du temps avec Access plutot qu'avec votre dulcinee
;-)

Bonne continuation, et bien des annees de... hum?... bonheur.

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...


"Txl" wrote in message
news:

Bonjour

J'ai perdu la main !!!

J'ai une requete qui me sert de plan de table pour mon mariage (j'accepte
les cadeaux !!!) et je voudrais compter le nombre de gens par table :

SELECT tblinvite.table, tblinvite.nom, tblinvite.prenom, tblinvite.groupe,
Sum(tblinvite.table) AS SommeDetable
FROM tblinvite
GROUP BY tblinvite.table, tblinvite.nom, tblinvite.prenom,
tblinvite.groupe, tblinvite.confirme
HAVING (((tblinvite.confirme)=True))
ORDER BY tblinvite.table, tblinvite.groupe;


Evidemment le dernier champ de SELECT ne fonctionne pas, ca ne me calcule
pas la somme des gens par table.

Merci de votre aide et désolé pour le truc de base mais en ce moment je
n'ai pas la tete a réfléchir, il faut encore les faire parts, le
traiteur...enfin les trucs habituels


Avatar
Txl
On Mon, 7 Jun 2004 13:11:49 +0200, Daniel Carollo
wrote:

Bonjour nobody Txl!

Une remarque d'ordre pratique tout d'abord: developper une application
pour
une seule utilisation (a moins que vous ne prevoyiez de vous marier
souvent?) ;-) est un peu exagere... J'aurais pense que quelques pages
dans un bloc-note et un crayon eussent ete plus appropries a la tache,
mais
bon...


Certs, certes, mais une fois le compte pour savoir à qui le faire part est
parti, qui a répondu (pour savoir qui relancer), qui vient, qui ne vient
pas, qui est avec qui (notion de "groupe") et qui ne doit pas etre à la
meme table que qui (vieilles rancoeurs familiales) le coup du papier et du
crayon est vite dépassé.



C'est quoi une somme de table?

A mon avis, il eut mieux valu utiliser un Count() pour avoir *le nombre*
des
invites par table...
Par contre, si vous faites un regroupement par nom et prenom, il y a peu
de
chance d'obtenir le nombre d'invites *par table*...


C'est EXACTMENT ce que je veux, COMBIEN de gens par table



Pendant qu'on est dans les corrections, utiliser une clause HAVING est
tres
gourmand en ressources, si la condition ne porte pas sur des champs
resultant d'un regroupement, il vaut mieux utiliser la clause WHERE.


La c'est MR ACCESS qui me l'a fait tout seul, il est vrai que je ne
maitrise pas bien la différence entre critères et ou.


La requete corrigee serait donc de la forme:
SELECT tblinvite.table, Count(tblinvite.table) AS NombreDInvites
FROM tblinvite
WHERE tblinvite.confirme
ORDER BY tblinvite.table;
pour avoir le nombre d'invites par table.

Pour avoir une liste rangee par table:
SELECT tblinvite.table, tblinvite.nom, tblinvite.prenom, tblinvite.groupe
FROM tblinvite
WHERE tblinvite.confirme
ORDER BY tblinvite.table, tblinvite.groupe;

En fin de compte, il serait preferable d'utiliser la derniere requete
comme
source d'un etat (pour l'impression de la liste des convives par table,
par
exemple), et de mettre le Count() dans le pied de groupe, ce qui evite de
generer deux requetes, mais bon, il n'y a rien d'obligatoire a cela,
puisque
vous preferez passer du temps avec Access plutot qu'avec votre dulcinee
;-)


J'ai déja l'état qui marche très bien, et je veux ajouter dans la requete
qui me fournit les données pour l'état (que j'ai postée) un champ comptant
les gens à la table 1, à la table 2 et ainsi de suite...

Bon, en farfouillant je suis allé rajouter un controle count dans l'état
qui donne le résultat escompté mais j'aurais bien aimé le faire dans la
requete.

Quand au temps passé avec la chérie comme elle travaille la journée je
fais de l'access pour garder le temps de faire autre chose avec elle le
soir.....genre des faire parts ha ha ha

Merci





Bonne continuation, et bien des annees de... hum?... bonheur.