Ich würde vorschlagen, Aggregation zu verwenden:
SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
FROM results
GROUP BY `Reg.No`, SubjectCode
HAVING SUM(`Pass/Fail` = 'Pass') = 0;
Das HAVING
-Klausel zählt die Anzahl der Ergebnisse für jeden Schüler und Kurs, wobei die letzte Spalte 'Pass'
ist . In MySQL werden boolesche Werte in einem numerischen Kontext als ganze Zahlen behandelt, wobei wahr 1 ist. Also sum(
Pass/Fail= 'Pass')
zählt, wie oft ein Student den Kurs bestanden hat. Der = 0
sagt, dass der Student den Kurs nie bestanden hat.
Verwenden Sie als Vorschlag keine Sonderzeichen wie /
und .
in Spaltennamen. Das erfordert es, die Spalten zu maskieren und macht den Code nur schwerer zu schreiben, weil er mit Backticks gefüllt ist.