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