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 -
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
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:
- MySQL conditions plusieurs tables
- Tables des matières word - Guide
- Mise en forme conditionnelle excel plusieurs conditions - Guide
- Mysql community server - Télécharger - Bases de données
- Tables ascii - Guide
- Sql lister les tables ✓ - Forum Programmation
2 réponses
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)
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)
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
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
Excellente journée à toi!
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