saadouli7
Messages postés36Date d'inscriptionmardi 26 avril 2011StatutMembreDernière intervention18 novembre 2011
-
23 mai 2011 à 15:04
saadouli7
Messages postés36Date d'inscriptionmardi 26 avril 2011StatutMembreDernière intervention18 novembre 2011
-
23 mai 2011 à 16:26
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
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 23 mai 2011 à 15:38
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 ?
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 23 mai 2011 à 15:57
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?