Dúvida função Exists - MySQL

Estou tentando fazer uma consultar no banco de dados com a função EXISTS mas o mesmo retorna um resultado não esperado. Minha consulta seria exibir o ID e nome dos alunos que tiveram aulas com o professor Jose (ID=2) em 2016 e que tiveram aula com o professor Carlos (ID=1) em algum ano.

Dados da minha tabela Historico onde consta todas as chaves estrangeiras:

Fiz a consulta através do código:

Select a.ra,a.nome from aluno a,historicos h where a.ra=h.ra and h.cod_prof=2 and h.ano=2016 and exists (Select 1 from historicos h,aluno a where a.ra=h.ra and h.cod_prof=1) group by a.nome;

O problema é que esse código me retorna apenas os alunos que tiveram aula com o professor de ID=2 descartando meu Select dentro do EXISTS. Alguma solução??? Não conseguir entender pq está retornando esse resultado.

Não faltou associar a subquery com a query principal?

SELECT a.ra, a.nome
FROM aluno a, historicos h
WHERE a.ra = h.ra AND 
      h.cod_prof = 2 AND
	  h.ano = 2016 AND
	  EXISTS( SELECT * 
	          FROM aluno aSub, historicos hSub
			  WHERE aSub.ra = hSub.ra AND
			        a.ra = aSub.ra AND
			        h.cod_prof = 1
			)
GROUP BY a.nome;

Não retornou nada aqui.

Sugestão. Vá remontando a query, parte por parte, até achar o problema.

Sem solução ainda, engraçado que pelo meu código se eu inverter a posição dos ID de COD_PROF ele exibi o resultado da consulta correta. Mas não é o proposito do exercício fazer primeiro a consulta pelo ID=1.

SELECT a.ra, a.nome FROM aluno a, historicos h
WHERE a.ra = h.ra AND h.cod_prof = 1 AND h.ano = 2016
AND EXISTS( SELECT * FROM aluno a, historicos h
WHERE a.ra = h.ra AND h.cod_prof = 2)
GROUP BY a.nome;