{Access} Requête à plusieurs regroupements
js8bleu
Messages postés
624
Statut
Membre
-
moiced59 Messages postés 1161 Statut Membre -
moiced59 Messages postés 1161 Statut Membre -
Bonjour à tous,
Je ne sais même pas par où commencer. En fait, je n'ai jamais été confronté à une requête aussi compliquée (sur des tranches d'âges, ni avec plusieurs regroupement). Bon, je vous explique : Je souhaiterai afficher par nationalité, le nombre d'élèves par tranche d'âge et par sexe pour chaque nationalité. Les tranches d'âges sont au nombre de 3. Tout d'abord les -10 ans, de 10 à 15 ans et enfin la dernière tranche concerne les 15+. J'ai une table qui contient les élèves avec leur age et une autre qui contient les nationalités. Dois-je créer une table pour les tranches d'âges? Quelqu'un saurait-il comment dois-je procéder s'il vous plaît?
tableeleve(numeleve,nomeleve,age,sexe,numnationalite)
tablenationalite(numnationalite,nationalite)
Merci d'avance de me rendre le sourire.
Cordialement.
Je ne sais même pas par où commencer. En fait, je n'ai jamais été confronté à une requête aussi compliquée (sur des tranches d'âges, ni avec plusieurs regroupement). Bon, je vous explique : Je souhaiterai afficher par nationalité, le nombre d'élèves par tranche d'âge et par sexe pour chaque nationalité. Les tranches d'âges sont au nombre de 3. Tout d'abord les -10 ans, de 10 à 15 ans et enfin la dernière tranche concerne les 15+. J'ai une table qui contient les élèves avec leur age et une autre qui contient les nationalités. Dois-je créer une table pour les tranches d'âges? Quelqu'un saurait-il comment dois-je procéder s'il vous plaît?
tableeleve(numeleve,nomeleve,age,sexe,numnationalite)
tablenationalite(numnationalite,nationalite)
Merci d'avance de me rendre le sourire.
Cordialement.
Configuration: Windows XP Firefox 3.5.6
9 réponses
-
Bonjour js8bleu,
L'ordre SQL suivant devrait te donner le résultat que tu cherchesSELECT a.nationalite AS Nationalite, b.sex AS Sexe ,sum( iif(b.age < 10 , 1 , 0)) AS Moins10 , sum(iif(b.age between 10 and 15 , 1 , 0)) AS Entre1015 , sum(iif(b.age > 15 , 1 , 0)) AS Plus15 FROM tablenationalite AS a, tableeleve AS b WHERE a.numnationalite = b.numnationalite GROUP BY b.sex, a.nationalite;
A plus -
bonjour
bah si tu laisse t table com ca tu devra effectuer 3 requetes mais si tu ajoute une colonne ds ta table eleve qui serait par exemple groupe
et la si moins de 10ans groupe 1
10 15 groupe 2
reste groupe 3
ensuite tu execute une requete et tu execute ton tri sur cette colonne en 1er puis sur ce que tu as besoin -
bonjour
Dans le sql d'access mettre desd iff je n'y crois pas trop!!! -
Bonjour moiced59,
Pas de problème, j'ai testé le code (sous Access 2003 et 2007) et cela fonctionne, tu trouveras également de la documentation sur le site de Microsoft
A plus. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
je suis d'accord avec toi pr le mettre en vb mais en SDL g un doute g tester la requete sous 2007 elle ne fonctionne pas
-
Bonjour,
Dans Access 2003, j'ai crée une nouvelle requête vide, j'ai ensuite choisis le mode sql, et j'ai copié/collé ce code ci-dessus et ensuite exécuté sans aucun problème, tu trouveras ici et là deux captures d'écrans.
A plus -
bah c tr fort ca !!!!! moi ca ne fonctionne pas sous 2007
a+ -
desolé tu avais raison j'avais laissé mon champ age en texte !!!!!