Sugerowałbym użycie agregacji:
SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
FROM results
GROUP BY `Reg.No`, SubjectCode
HAVING SUM(`Pass/Fail` = 'Pass') = 0;
HAVING
klauzula zlicza liczbę wyników dla każdego ucznia i kursu, gdzie ostatnia kolumna to 'Pass'
. W MySQL wartości logiczne są traktowane jako liczby całkowite w kontekście numerycznym, gdzie true wynosi 1. Tak więc sum(
Zaliczony/niezaliczony= 'Pass')
zlicza, ile razy student zaliczył kurs. = 0
mówi, że uczeń nigdy nie zaliczył kursu.
Proponujemy nie umieszczać znaków specjalnych, takich jak /
i .
w nazwach kolumn. Wymaga to ucieczki od kolumn i po prostu utrudnia pisanie kodu, ponieważ jest wypełniony znakami.