Forum Clubic

Requete mysql avec condition

Bonjour à tous,

Je souhaite pour un projet, faire une requete sql qui récupère les élèves qui ont des notes inférieures à 17 et seulement ceux-ci.

Exemple :
Table : note
student_id int
mark int

Table : students
id
name

SELECT DISTINCT s.id, s.name
FROM stutends AS s
LEFT JOIN note AS n
ON s.id = n.student_id
WHERE n.mark sont TOUTES en dessous de 17;

Merci d’avance pour votre aide !!
Kevin.

Sinon tu as l’option sous requêtes :

select * from students STU where STU.student_id in (select MAR.STUDENT_ID from note where mark < 17)

Moins performant qu’un left join ceci étant dit. Par contre si tu veux que l’ensemble des notes d’un élève soient inférieures à 17, là, faudrait voir autrement. Je sais qu’il existe d’autres opérateurs que le IN [voir ici], mais je ne m’en suis jamais servi.

Merci pour ta réponse, cependant le problème reste le même avec ta requête.

Ici la sous requête récupère tous les étudiants ayant une note en dessous 17 mais si un étudiant a une note en dessous de 17 puis à l’examen suivant une note au dessus de 17 et bien, il retournerait quand meme l’étudiant à cause de cette premiere note. :frowning:

Dans ce cas, ta question n’est pas claire :slight_smile:

Ce que tu veux ce sont les étudiants n’ayant jamais eu de notes au dessus de 17. Comme le SQL c’est merveilleux, tu peux tenter ça :

select *
from students STU
where STU.student_id not in (select MAR.STUDENT_ID from note where mark >= 17)

Affiche aussi les étudiants sans notes.

Toi tu me plais :slight_smile:

Je peux pas la tester de suite, je suis au boulot, mais ton idée me va ! Je teste ca et je vous dis quoi :slight_smile:

Problème résolu, merci beaucoup !