Ik stel voor om aggregatie te gebruiken:
SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
FROM results
GROUP BY `Reg.No`, SubjectCode
HAVING SUM(`Pass/Fail` = 'Pass') = 0;
De HAVING
clausule telt het aantal resultaten voor elke student en cursus waarbij de laatste kolom 'Pass'
is . In MySQL worden booleans behandeld als gehele getallen in een numerieke context, waarbij waar 1 is. Dus sum(
Pass/Fail= 'Pass')
telt het aantal keren dat een student geslaagd is voor het vak. De = 0
zegt dat de student de cursus nooit heeft gehaald.
Gebruik als suggestie geen speciale tekens zoals /
en .
in kolomnamen. Dat vereist het ontsnappen van de kolommen en maakt de code alleen maar moeilijker om te schrijven omdat deze gevuld is met backticks.