1
resposta

Join X sub-queries

Diante das aulas de sub-queries, observei que usando o join também poderia chegar ao mesmo resultado da sub-queries. No caso: Sub-queries

select a.nome, 
    (select count(r.id) from resposta r where r.aluno_id = a.id) as respostas 
from aluno a;

Join

select a.nome, count(r.id) from aluno a
  join resposta r on a.id = r.aluno_id
  group by a.nome
  order by a.nome;

A resposta é quando se usa a sub-queries ela te retorna até quem não respondeu, enquanto que no join somente quem respondeu. Por via de regra, ambos podem ser usados em todos os casos? Ou teria restrição?

1 resposta

Boa noite o sub-queries vai trazer o registro conforme a tabela principal aluno se nao tive traz null na coluna.

A segundo exemplo e por que o join obriga trazer somente os registro igual nas duas tabelas, podendo ficar igual do sub-queries se você colocar LEFT ou RIGHT

exemplo select a.* from compras a LEFT join COMPRADORES r on a.id = r.id