Transformer une requête

kabamel Messages postés 8 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 27 octobre 2014 - 21 oct. 2014 à 12:56
kabamel Messages postés 8 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 27 octobre 2014 - 27 oct. 2014 à 10:27
Bonjour, je travaille actuellement sur une base de donnée d'une école.
je travaille sur Access 2007. je voudrais transformer une requête en une autre.
Dans le fichier joint, j'ai pu faire dans Excel mais je veux obtenir le même resultat dans Access.
Dans les fichiers joints, la requête à transformer est "rqt_moyenne" (image 1) et le resultat que j'aimerais obtenir est "BD" (image 2).
je vous remercie pour l'aide que vous m'apporterez.
Merci
.

9 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
21 oct. 2014 à 14:59
Bonjour,


. je voudrais transformer une requête en une autre

Sans nous montrer la requête que tu as ( le "code" sql) .. difficile de te répondre...
0
kabamel Messages postés 8 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 27 octobre 2014
Modifié par jordane45 le 21/10/2014 à 18:09
Ok, j'ai posé les deux images qui reflète mes requêtes.
Dans tous les cas, je vous envois la sql de la première requête, la deuxième image est ce que je cherche (je sais pas comment faire)
Voici le code de la première requête :
SELECT [Tbl Note].N°Note, TblElèves.N°Matricule, TblElèves.Nom, TblElèves.Prénom, [Tbl Evaluation].Type_Evaluation, [Tbl Classe].[Nom Classe], [Tbl Classe].Année, [Tbl Note].Français, [Tbl Note].Physique
FROM TblElèves INNER JOIN (([Tbl Classe] 
INNER JOIN [Tbl Evaluation] ON [Tbl Classe].N°Classe=[Tbl Evaluation].N°Classe) 
INNER JOIN [Tbl Note] ON [Tbl Evaluation].N°Evaluation=[Tbl Note].N°Evaluation) ON TblElèves.N°Elève=[Tbl Note].N°Elève;



EDIT : Ajout des balises de code.

Merci pour m'avoir répondu aussitôt.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
21 oct. 2014 à 18:20
Bonsoir,

En lisant ta requête... je pense déjà voir que tu as un souci de conception de ta table NOTES...


Je pense que ta structure de ta BDD devrait ressembler à un truc du genre :



-Un Elève pouvant avoir UNE ou PLUSIEURS NOTES
-Une NOTE est rattachée à UNE matière
-Une NOTE est rattachée à UNE Evaluation

Ainsi.. tu pourras réaliser "facilement" la requête qui t'interesse....
Et ce qui te permet aussi d'ajouter des matières "dynamiquement" sans devoir à chaque fois aller dans ta BDD pour ajouter un champ dans ta table....



0
kabamel Messages postés 8 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 27 octobre 2014
22 oct. 2014 à 10:51
Salut à tous,
Merci Jordan, effectivement cela m'est venu à l'idée mais le problème je ne sais pas comment trouver le rang d'un élève.
je détaille un peu :
l'élève composera en Français, et Physique, je regroupe les notes obtenus par l'élève et je calcule sa moyenne ensuite en fonction de cette moyenne je fais un classement (rang). Il faut signaler aussi que j'ai plusieurs élèves dans différentes classes et ils composent tous suivant les trimestres.
comment mettre un tel système en place.
Une fois encore merci.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
22 oct. 2014 à 12:28
Une fois que tu as une structure de BDD correcte et réfléchie... il te sera plus simple de manipuler les données qui s'y trouvent pour ensuite effectuer les affichages/classements que tu souhaites avoir.

Un autre membre à fait exactement la même chose que toi... et comme il n'a pas pensé sa table avant il a galéré à obtenir ce qu'il voulait....
Il a même fait la même "erreur" que toi lorsqu'il à créé sa table de notes (mettre une colonne par matière....argghhhh...horreur....).

Tout ça pour te dire : REFAIS ta BDD en mettant chaque "objet" ( eleve, examen, note, classe, professeur, matières ) dans des tables séparées.

Ensuite ce n'est qu'une question de JOINTURE pour récuperer ce que tu souhaites.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kabamel Messages postés 8 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 27 octobre 2014
22 oct. 2014 à 13:06
Merci Jordan,
Ok, je change la structure de ma base, ensuite je t'enverrai une copie joint par e-mail.
Mais je connais pas ton mail ou bien comment je la poserais comme fichier joint sur le forum.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
22 oct. 2014 à 14:53
Le mieux c'est de poster sur le forum si tu peux (plutot que par mail).
0
kabamel Messages postés 8 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 27 octobre 2014
Modifié par jordane45 le 23/10/2014 à 17:14
Bonjour à tous,
j'ai changé la structure de ma base. j'ai maintenant une nouvelle requête dont voici le code sql :

SELECT [tbl Elèves].[Numéro Elève]
     , [tbl Elèves].[Nom Elève]
     , [tbl Elèves].[Prénom Elève]
     , [tbl Classes].[Nom Classe]
     , [tbl Matières].Discipline
     , [tbl Notes].N°Evaluation
     , [tbl Notes].Coefficient
     , [tbl Notes].Note
     , Sum([Coefficient]*[Note]) AS [Note coéfficié]
FROM tbl_Evaluation 
INNER JOIN ([tbl Classes] 
     INNER JOIN ([tbl Matières] 
        INNER JOIN ([tbl Elèves] 
          INNER JOIN [tbl Notes] ON [tbl Elèves].[Numéro Elève] = [tbl Notes].[Numéro Elève]) ON [tbl Matières].[Numéro Matière] = [tbl Notes].[Numéro Matière]) ON [tbl Classes].[Numéro Classe] = [tbl Matières].[Numéro Classe]) ON tbl_Evaluation.N°Evaluation = [tbl Notes].N°Evaluation
GROUP BY [tbl Elèves].[Numéro Elève]
        , [tbl Elèves].[Nom Elève]
        , [tbl Elèves].[Prénom Elève]
        , [tbl Classes].[Nom Classe]
        , [tbl Matières].Discipline
        , [tbl Notes].N°Evaluation
        , [tbl Notes].Coefficient
        , [tbl Notes].Note
        , [tbl Matières].[Numéro Classe]
        , [tbl Notes].[Numéro Matière];


Maintenant je voudrais ajouté deux champs calculés :
1. Le champs Max : qui calculera le maximum des notes en fonction des variables (Matières, Évaluation, Classe) comme dans l'image 2;
2. Le champs Min : qui calculera le minimum des notes en fonction des variables (Matières, Évaluation, Classe) comme dans l'image 2.
Donc je ne sais pas si une telle fonction existe.
Merci pour votre aide.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
23 oct. 2014 à 17:20
Bonjour,

1 - J'ai édité ton message pour y ajouter la coloration syntaxique (ce n'est pas la première fois)...
Merci d'y penser à l'avenir.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

2 - J'ai remis en forme ta requête avec des retours à la ligne... ça la rend BEAUCOUP plus lisible et compréhensible.. (ça aussi.. essaye de le faire )

3 - Pour le MAX et le MIN .. ces deux fonctions existent en SQL .. tu peux dont les utiliser.
L'idéal serait de le faire dans une requête séparée...soit d'ajouter à ta requête actuelle un sous select...

4 - Tu fais des JOINTURES .. dans des JOINTURES .. dans des JOINTURES... (aiee.. j'ai mal à la tête...) A mon avis il faudrait revoir ta requête..... et je dirais même... COMMENCER PAR CA.
0
kabamel Messages postés 8 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 27 octobre 2014
24 oct. 2014 à 11:05
bonjour à tous,
Merci jordan, je suis novice en sql et vba, je sais qu'il y a une fonction Min et Max dans sql, mais je ne sais pas comment mettre le système dont je vous parle en place.
si tu pouvais m'envoyer un code aucun problème.
Une fois encore Merci, pour tous que tu fais.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
24 oct. 2014 à 12:27
Bonjour,

Non je ne t'enverrais pas un code... (ici on ne fait pas du tout fait...)
Commence par appliquer mes remarques et revient nous voir après avec ton code modifié.
0
kabamel Messages postés 8 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 27 octobre 2014
24 oct. 2014 à 13:58
Ok, Néanmoins, j'essayerai ensuite je vous enverrais le code.
Merci beaucoup
0
kabamel Messages postés 8 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 27 octobre 2014
27 oct. 2014 à 10:27
bonjour à tous,
j'ai essayé de mettre cette fonction dans ma requête mais je trouve des zéro (0) donc finalement je me dis que c'est pas le bon code.
voilà mon idée : "Si les contenus de Classe sont égaux, si celui de Trimestre sont égaux et celui de Matière sont égaux alors on prend le maximum de Note".

Function MonMax(ByVal valeur1 As Double, valeur2 As Double, valeur3 As Double, valeur4 As Double) As Double
Dim resultat As Double
resultat = valeur4
'Si les contenues des valeurs sont égaux alors choisir le maximum de la valeur 4
If valeur1 = valeur1 And valeur2 = valeur2 And valeur3 = valeur3 And resultat > resultat Then
MonMax = resultat
End If
End Function

En rappelle, je voudrais obtenir le résultat telle dans l'image 2.
Je pense être bien compris.
Une fois encore Merci.
0
Rejoignez-nous