4
respostas

entao qual é a difenrença entre exists e left join?

entao qual é a difenrença entre exists e left join?

4 respostas

Fala Adriano,

Vou te responder de uma forma prática não teórica ok?

Suponha que temos duas tabelas

Tabela CARRO Campos ID_CARRO, NOME e ID_MARCA Tabela MARCA Campos ID_MARCA e MARCA

Se tivermos que mostrar todos os carros e sua marca, usaremos o JOIN

SELECT carro.nome, Marca.Marca FROM carro JOIN marca on marca.id_marca = carro.id_marca

No caso do JOIN se o carro foi cadastrado sem marca ele não aparecerá, para resolver este problema usamos o LEFT JOIN

SELECT carro.nome, Marca.Marca FROM carro LEFT JOIN marca on marca.id_marca = carro.id_marca

Agora se algum carro por algum motivo está com uma marca que não existe na tabela marca ele não irá aparecer então usamos RIGHT JOIN onde mostrará todos os carros que a marca não Existe.

SELECT carro.nome, Marca.Marca FROM carro LEFT JOIN marca on marca.id_marca = carro.id_marca

agora queremos trazer todos os carros e marcas independente da existência de um ou de outro usamos o INNER JOIN

SELECT carro.nome, Marca.Marca FROM carro INNER JOIN marca on marca.id_marca = carro.id_marca

Agora o comando EXISTS não foi feito para juntar tabelas, embora muitas vezes conseguiremos o mesmo resultado do JOIN mais existem casos que ele será totalmente útil e evita muito trabalho.

Grande abraço.

Boa tarde,

Como está este caso funcionou?

Atenciosamente.

Exemplo de funcionamento com o left

SELECT 
    A.nome 
FROM aluno A
    LEFT JOIN matricula M ON A.id = M.aluno_id
WHERE
    M.aluno_id IS NULL

O Exists não faz agregação com outra tabela, o left join consegue verificar os dados null de outra tabela, o exists normalmente é utilizando somente em consultas sem joins