Navrhoval bych použít agregaci:
SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
FROM results
GROUP BY `Reg.No`, SubjectCode
HAVING SUM(`Pass/Fail` = 'Pass') = 0;
HAVING klauzule počítá počet výsledků pro každého studenta a kurz, kde poslední sloupec je 'Pass' . V MySQL se s booleany zachází jako s celými čísly v číselném kontextu, přičemž true je 1. Takže sum( Pass/Fail= 'Pass') počítá, kolikrát student absolvoval kurz. = 0 říká, že student kurz nikdy neprošel.
Jako návrh nevkládejte speciální znaky jako / a . v názvech sloupců. To vyžaduje escapování ze sloupců a jen znesnadňuje zápis kódu, protože je plný zpětných zaškrtnutí.