Comment creer une requette

Résolu
aksaid2000
Messages postés
12
Date d'inscription
vendredi 17 janvier 2014
Statut
Membre
Dernière intervention
7 février 2014
- 17 janv. 2014 à 11:44
 Profil bloqué - 25 janv. 2014 à 08:48
Bonjour
je travaille actuellement sur access 2003.
j'ai créé une table contenant les champs suivants: Nom et Prénom ,Spécialité,Sexe.
je désir créer une requette qui me donne le total des inscrits dans les spécialités dont le nombre de fille ce qui me donnera par example :

Spécialité: Total Dont filles
Informatique 20 10
Anglais 14 0
.............etc
je vous serais trés reconnaissant si vous pourrez m'aider
car avec cette requette j'aurais mon effectif a jour a bientôt !

3 réponses

Je pense que tu peux te diriger vers les procédures stockées.

Tu peux faire

SELECT COUNT(*),specialite FROM table GROUP BY specialite
-------
D'après mes recherches, pour afficher le résultat d'un agrega comme "dont nombre de filles", il faut utiliser une clause CASE
--
0
aksaid2000
Messages postés
12
Date d'inscription
vendredi 17 janvier 2014
Statut
Membre
Dernière intervention
7 février 2014

18 janv. 2014 à 11:33
merci thunderhunter je vais essayer votre methode et vous informer du resultat.
0
aksaid2000
Messages postés
12
Date d'inscription
vendredi 17 janvier 2014
Statut
Membre
Dernière intervention
7 février 2014

24 janv. 2014 à 15:11
je vous remercie pour votre message. en fait j'ai essayé de remplacer :
where T1.Specialite = Table1.Specialite
par:LEFT OUTER JOIN Table1.Specialite ON Table1.Specialite=T.Specialite
et ca n'a pas marché ya t'il une erreur dans la saisie et je voudrais apprendre votre methode si c'est possible. et merci d'avance.
0
Profil bloqué
25 janv. 2014 à 08:48
Oui Il manque le 1
LEFT OUTER JOIN Table1.Specialite ON Table1.Specialite=T1.Specialite 

autant pour moi
Bon conrage !
0
cs_Robert33
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
18 janv. 2014 à 10:03
Bonjour

tu peux aussi imbriquer une requête avec jointure , c'est pas terrible en terme de perf mais si la table n'est pas trop volumineuse ...

ex:
SELECT Table1.Specialite, 
 (select count(*) from table1 as T1 where T1.Specialite = Table1.Specialite ) AS CompteTotal, 
 Count(Table1.Sexe) AS CompteDeFille
FROM Table1
GROUP BY Table1.Specialite,Table1.Sexe
HAVING (Table1.Sexe="f");

0
aksaid2000
Messages postés
12
Date d'inscription
vendredi 17 janvier 2014
Statut
Membre
Dernière intervention
7 février 2014

18 janv. 2014 à 11:35
je vous remercie cs_Robert33 énormément ça a très bien marché et c'est exactement le résultat que je cherchais ,vous m'avez réglé un grand problème et c'est très gentil.
a bientôt!
0
aksaid2000
Messages postés
12
Date d'inscription
vendredi 17 janvier 2014
Statut
Membre
Dernière intervention
7 février 2014

18 janv. 2014 à 11:51
Il reste que les spécialités dont les filles ne sont pas inscrites ne s'affichent pas et je voudrais avoir par exemple un résultat du genre:

Mécanique Total Général 10 Dont filles 0
0
Par ce que vous faite une equijointure en requête imbrique
 where T1.Specialite = Table1.Specialite

Si vous remplacez cela par
LEFT OUTER JOIN Table1.Specialite ON Table1.Specialite=T.Specialite

OU
RIGHT OUTER JOIN Table1.Specialite ON Table1.Specialite=T.Specialite

Alors la requête devrait inclure tout les résultat y compris 0
0
cs_Robert33
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
18 janv. 2014 à 16:16
Re ...

Pour avoir les spécialités sans inscription il faut changer le sens de la requête et mettre la clause WHERE sexe="F" dans l'imbrication
SELECT Table1.Specialite, 
(select count(*) from table1 as T1 where T1.Specialite = Table1.Specialite AND  T1.sexe="F") AS CompteDeFille, 
Count(Table1.Sexe) AS CompteTotal
FROM Table1
GROUP BY Table1.Specialite;
0
aksaid2000
Messages postés
12
Date d'inscription
vendredi 17 janvier 2014
Statut
Membre
Dernière intervention
7 février 2014

24 janv. 2014 à 15:15
je vous remercie pour votre aide precieuse.ca a trés bien marché et vous m'avez réglé un grand probleme dans mon travail ou l'effectif des inscrit est souvent soumis a des modifications. sachant que je suis novice en SQL ;connaissez vous un site ou je pourrais m'initier ?
Merci encore et a bientot !
0