Предлагам да използвате агрегиране:
SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
FROM results
GROUP BY `Reg.No`, SubjectCode
HAVING SUM(`Pass/Fail` = 'Pass') = 0;
HAVING
клаузата отчита броя на резултатите за всеки студент и курс, където последната колона е 'Pass'
. В MySQL булевите стойности се третират като цели числа в числов контекст, като true е 1. И така, sum(
Успешно/Неуспешно= 'Pass')
отчита колко пъти даден студент е преминал курса. = 0
казва, че студентът никога не е преминал курса.
Като предложение, не поставяйте специални знаци като /
и .
в имената на колоните. Това изисква избягване на колоните и просто прави кода по-труден за писане, защото е пълен с обратни отметки.