entao qual é a difenrença entre exists e left join?
entao qual é a difenrença entre exists e left join?
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