Independente de INNER ou LEFT, o seu problema na verdade não é esse (pode ser que seja um outro problema, mas não o em questão), de qualquer maneira, se nada fosse encontrado, deveria retornar um 0.
Vi esse post procurando no google, não sei o que tem dentro porque não tenho acesso, mas pelo nome parece que pode te ajudar.
SELECT A.DESCRICAO, COALESCE(COUNT(AL.ID), 0) AS TOTAL
FROM ALUNOS AL
INNER JOIN CURSOS C ON C.ID = AL.CURSO
INNER JOIN RESPOSTAS R ON R.ALUNO = AL.ID AND R.PERGUNTA = 2
INNER JOIN RESPOSTAS R1 ON R1.ALUNO = AL.ID AND R1.PERGUNTA = 1
INNER JOIN ALTERNATIVAS A ON R.ALTERNATIVA = A.ID
INNER JOIN ALTERNATIVAS A1 ON R1.ALTERNATIVA = A1.ID
WHERE AL.ANO = 2012 AND C.CAMPUS = 5
GROUP BY A.LETRA, A1.LETRA
ORDER BY A.LETRA, A1.LETRA;
Resultado obtido desse SELECT:
17 anos -> 6
18 anos -> 8
18 anos -> 14
19 anos -> 3
19 anos -> 4
20 anos -> 2
20 anos -> 5
21 anos -> 3
21 anos -> 4
22 a 24 anos -> 2
22 a 24 anos -> 1
25 a 29 anos -> 4
25 a 29 anos -> 8
30 anos ou mais -> 2
30 anos ou mais -> 6
Resultado ESPERADO (pois a pergunta 2 tem oito alternativas e a pergunta 1 tem duas):
[color=red]17 anos -> 0[/color]
17 anos -> 6
18 anos -> 8
18 anos -> 14
19 anos -> 3
19 anos -> 4
20 anos -> 2
20 anos -> 5
21 anos -> 3
21 anos -> 4
22 a 24 anos -> 2
22 a 24 anos -> 1
25 a 29 anos -> 4
25 a 29 anos -> 8
30 anos ou mais -> 2
30 anos ou mais -> 6