Requette imbriqué

Signaler
Messages postés
36
Date d'inscription
mardi 26 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2011
-
Messages postés
36
Date d'inscription
mardi 26 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2011
-
bonjour,
j'ai deux requettes :la premiere consiste à determiner le bloc et le nombre des séances que lui est affectées pendant un jour donné pour une filiere donnée ...
1)sql="Select bloc_, count(bloc_) from Enseignements where jour_=1 and CycleAnnée_=" & ComboBox2.SelectedItem & " and filière_='" & ComboBox1.SelectedItem & "' and Groupe=" & ListBox1.SelectedItem & " GROUP BY (bloc_))"
la deuxième calcule la valeur maximale de nombre des seances affectés à un bloc (pour un jour donné...)
2) select Max(NB)from(select count(bloc_)as NB from Enseignements where jour_=1 and CycleAnnée_=" & ComboBox2.SelectedItem & " and filière_='" & ComboBox1.SelectedItem & "' and Groupe=" & ListBox1.SelectedItem & " GROUP BY (bloc_))"
mon but c'est d'afficher le bloc qui a cette valeur maximale de nombre de séances
j'ai essayé de les faire imbriqué mais j'arrive pas à mon but j'ai toujours un message d'erreur qui dit que ma requette renvoie au plus une valeur.
s'il vous plait est ce que quelqu'un peut m'aider
merci

5 réponses

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

Tu veux trouver, pour un jour donné et une filière donnée, le bloc qui a/a eu le plus de séances programmées, c'est ça ?
Tu cherches à le faire en une seule requête ?
Quel SGBD utilises-tu ?
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Oups, dernière question idiote, on est dans la section Access, désolé :p
Messages postés
36
Date d'inscription
mardi 26 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2011

salut,
je travaille avec sqlserver 2005 sur une base de données access
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Et ben niveau ânerie j'aurais fait fort sur ce sujet ^^
Donc tu codes du VBA et ton SGBD est SQL Server.

De toute façon l'idée reste la même :
- tu crées ta requête GROUP BY qui fait les totaux de séances,
- tu l'ORDER BY ce total de manière DESCendante,
- tu fais un TOP 1 pour n'avoir que le premier, qui sera celui qui en a le plus (ou le premier enregistrement qui en compte le plus, si plusieurs ont un nombre identique de séances).

ça donnerait un truc du genre :
SELECT TOP 1 bloc, COUNT(*)
  FROM Enseignements
 WHERE date = madate
   AND filiere = mafiliere
 GROUP BY bloc
 ORDER BY COUNT(*) DESC;


En tout cas c'est la première soluce qui me vient à l'esprit.
Messages postés
36
Date d'inscription
mardi 26 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2011

merci ça marche , il suffit d'extraire le nom du bloc du resultat fournit par ta requette proposé
merciiiiiiiii