Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

USO DO ON X WHERE

Fiquei com uma pequena duvida.

No Exemplo a baixo:

select a.nome
 from aluno a
  where exists
   (select m.id
   from matricula m
   where m.aluno_id = a.id);

Porque no Where dentro da Sub query, nós não utilizamos o "on" para definir a igualdade nos campos? Como vínhamos utilizando antes para dizer a igualdade?

Tipo assim:

select a.nome
 from aluno a
  where exists
   (select m.id
   from matricula m
   On m.aluno_id = a.id);

Tentei o "on" e deu errado. Só gostaria de entender essa diferença para saber quando usar um e quando usar outro.

1 resposta
solução

Você utiliza o ON quando vai fazer algum tipo de JOIN entre as tabelas (RIGHT, LEFT, ou INNER, por exemplo)

Pelo que eu vi da sua segunda query, você quer trazer todos os registros de alunos que existam na tabela de matriculas, isso seria um INNER JOIN. Para o ON funcionar, a query teria que ser escrita desta forma:

select a.nome
 from aluno a
INNER JOIN matricula m
On m.aluno_id = a.id