MySQL conditions plusieurs tables

Résolu
hooli Messages postés 85 Date d'inscription   Statut Membre Dernière intervention   -  
Malekal_morte- Messages postés 180304 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

Je suis débutante dans le mySQL et j'aimerai arriver à ceci:


J'ai une table Eleve avec une FK_note, FK_module
J'ai une table note
J'ai une table module

J'aimerai faire la moyenne d'un élève precis en fonction du genre de module.
Je m'explique:

Dans module il y a "genre" avec comme valeur, CIE, Module, CFC.

Il me faudrai la moyenne CIE de jean dupon.

Voici mon code:

SELECT AVG( fk_note ) AS note
FROM t_eleve
WHERE nomele = 'Dupon'
AND prenomele = 'Jean'
AND fk_module = '4'
OR fk_module = '5'
OR fk_module = '6'


fk_module = id_module

Le problème c'est qu'il me fait la moyenne des élèves (n'importe lesquelles) qui ont une valeur 4, 5, ou 6 dans leur FK_module, et non de jean dupon précisément.

Ou est mon erreur?

Merci d'avance pour le temps que vous allez m'accorder.

Hooli




A voir également:

2 réponses

Malekal_morte- Messages postés 180304 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   24 685
 
Salut,

Tes conditions ne sont pas assez restrictives (si j'ai bien compris ce que tu voulais faire), si tu veux avoir que le nom/prénom Jean Dupond et jouer sur les notes, faut ajouter des parenthèses :

SELECT AVG( fk_note ) AS note
FROM t_eleve
WHERE (nomele = 'Dupon'
AND prenomele = 'Jean')
AND
(fk_module = '4'
OR fk_module = '5'
OR fk_module = '6')

pour n'avoir que le nom et prénom jean dupond ET fk_module = (4 ou 5 ou 6)
0
hooli Messages postés 85 Date d'inscription   Statut Membre Dernière intervention   7
 
Merci beaucoup Malekal_morte- Tu as réglé mon problème!

Excellente journée à toi!
0
hooli Messages postés 85 Date d'inscription   Statut Membre Dernière intervention   7
 
Cependant j'aurai une autre question, est-il possible, au lieu de faire avec l'id de module, de faire avec genre?

du type:

SELECT AVG( fk_note ) AS note
FROM t_eleve, t_module
WHERE (
nomele = 'Dupon'
AND prenomele = 'Jean'
)
AND (
t_module.genre = 'CFC'
)

Car j'ai essayer mais il me donne la moyenne de jean dupon dans n'importe quel genre, et non que de CFC.

Car avec les FK, c'est tout bon!

Merci de votre aide!
Bonne journée
0
Malekal_morte- Messages postés 180304 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   24 685
 
Cool :)

Par contre ; tes ( ) dans la seconde expression ne servent à rien

AND (
t_module.genre = 'CFC'
)


les ( ) ne sont intéressantes que pour regrouper des conditions et comme la tu en as qu'une.

Sinon pour ta question, ça doit être possible à travers une jointure mais pour ça faut un id communs entre note et module afin de savoir dans quel module se trouve la note et là je vois pas trop comment c'est fichu ton truc.

C'est fait comment au niveau des tables notes et modules ?


Yes, no, maybe
I don't know
Can you repeat the question?
You're not the boss of me now
0