Suggerirei di utilizzare l'aggregazione:
SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
FROM results
GROUP BY `Reg.No`, SubjectCode
HAVING SUM(`Pass/Fail` = 'Pass') = 0;
Il HAVING
La clausola conta il numero di risultati per ogni studente e corso in cui l'ultima colonna è 'Pass'
. In MySQL, i booleani sono trattati come numeri interi in un contesto numerico, dove true è 1. Quindi, sum(
Superato/Non superato= 'Pass')
conta il numero di volte che uno studente ha superato il corso. Il = 0
dice che lo studente non ha mai superato il corso.
Come suggerimento, non inserire caratteri speciali come /
e .
nei nomi delle colonne. Ciò richiede l'escape delle colonne e rende il codice più difficile da scrivere perché è pieno di backtick.