SQL aide svp

Chloé -  
 Chloé -
Bonjour,

Je viens vous demander un peu d'aide svp pour une requete que j'ai à réaliser dans le cadre d'un exercice

voilà le Schéma :

COURS(NomCours, Enseignant, Niveau)
INSCRIT(Nocarte, Nom, Age, Sexe)
PLANNING(NomCours, Jour, Lieu, Heure)
PARTICIPATION(Nocarte, NomCours)

la question :

Trouver les cours qui sont plus nombreux que le cours AEROBIC

et là je sais pas trop quoi faire...donc si vous pouviez me mettre sur la voie...

A voir également:

4 réponses

Arya Dröttningu Messages postés 650 Statut Membre 157
 
Bonjour,
ça fait un petit moment que je n'ai pas refait de SQL mais je pense que tu devrais faire un truc comme ça :
D'abord tu sélectionnes tous les nomcours et Nocarte et tu regroupes par nomcours.
Puis tu fais un having dans lequel tu vérifies que le nombre de Nocarte est bien supérieur à (requête comptant le nombre de participant du cours AEROBIC)
0
Chloé
 
Merci de prendre le temps de m'aider...ça devrait faire un truc comme ça ? :

select NomCours,Nocarte,count(Nocarte)as Nbr 
from PARTICIPATION 
Group by NomCours,Nocarte 
having count(Nocarte)>(select count(Nocarte) from PARTICIPATION Having NomCours='Aerobic') 


Mais c'est pas bon ... :-s
Ca me dit erreur
0
Arya Dröttningu Messages postés 650 Statut Membre 157
 
J'aurais mis un truc dans ce genre là :

select NomCours,Nocarte
from PARTICIPATION 
Group by NomCours
having count(Nocarte)>(select count(Nocarte) from PARTICIPATION where Nomcours = 'Aerobic') 


par contre je n'ai pas de logiciel pour pouvoir tester donc : ça te dit quoi comme erreur ?
0
Chloé
 
ERREUR : La colonne 'PARTICIPATION.Nocarte' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
0
Arya Dröttningu Messages postés 650 Statut Membre 157
 
Et si tu essayes ça :
select NomCours
from PARTICIPATION 
Group by NomCours
having count(Nocarte)>(select count(Nocarte) from PARTICIPATION where Nomcours = 'Aerobic') 


Apparemment ce qu'il y a dans le select doit être dans le group by.....
0
Siluni
 
SELECT NomCours, COUNT(*) AS participant  
FROM participation    
GROUP BY participation.NomCours  
HAVING (participant > (SELECT COUNT(*) FROM participation WHERE NomCours = 'Aerobic'))  
ORDER BY participant DESC;  


Le mieu reste comme meme de faire un define, c'est plus propre et moin lourd en traitement
0
Chloé
 
Merci beaucoup pour ton aide...c'est sympa j'ai compris maintenant
0