Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Filtrar alunos que ainda não passaram em uma disciplina


Sugiro usar agregação:
SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
FROM results
GROUP  BY `Reg.No`, SubjectCode
HAVING SUM(`Pass/Fail` = 'Pass') = 0;

O HAVING cláusula conta o número de resultados para cada aluno e curso onde a última coluna é 'Pass' . No MySQL, os booleanos são tratados como inteiros em um contexto numérico, com true sendo 1. Então, sum( Aprovado/Reprovado= 'Pass') conta o número de vezes que um aluno passou no curso. O = 0 diz que o aluno nunca passou no curso.

Como sugestão, não coloque caracteres especiais como / e . nos nomes das colunas. Isso requer o escape das colunas e apenas torna o código mais difícil de escrever porque está cheio de acentos graves.