SQL aide svp

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...

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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)
    1. 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
  2. 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 ?
    1. 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.
    2. 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.....
  3. 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
    1. Merci beaucoup pour ton aide...c'est sympa j'ai compris maintenant