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í.