Je suggérerais d'utiliser l'agrégation :
SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
FROM results
GROUP BY `Reg.No`, SubjectCode
HAVING SUM(`Pass/Fail` = 'Pass') = 0;
Le HAVING
la clause compte le nombre de résultats pour chaque étudiant et cours où la dernière colonne est 'Pass'
. Dans MySQL, les booléens sont traités comme des entiers dans un contexte numérique, vrai étant 1. Ainsi, sum(
Réussi/Échoué= 'Pass')
compte le nombre de fois qu'un étudiant a réussi le cours. Le = 0
indique que l'étudiant n'a jamais réussi le cours.
En guise de suggestion, ne mettez pas de caractères spéciaux tels que /
et .
dans les noms de colonne. Cela nécessite d'échapper les colonnes et rend simplement le code plus difficile à écrire car il est rempli de backticks.