Вы находитесь на странице: 1из 4

Left join uma operao em consultas SQL para retornar todos os dados da coluna esquerda, independente de haver ou no dados

s na coluna da direita.

Imagine que voc deseja listar todos os clientes de uma empresa, os valores de compras dentro do ms. Se voc deseja que aparea todos os clientes, independente de terem feito compras ou no, ento o Left join a juno ideal para esta consulta SQL. A juno Inner join um pouco diferente do left join, se aplicarmos ao exemplo anterior veremos que ela s retornaria os clientes que tiveram compras no ms.

Alguns exemplos de left join e inner join.


Primeiro vamos criar trs tabelas no banco de dados: empregados, pagamentos e descontos.
create table empregados( codigo_empregado int, nome varchar(50) ) create table pagamentos( codigo_pagto int, codigo_empregado int, valor decimal(10,2) ) create table descontos( codigo_desconto int, codigo_empregado int, valor decimal(10,2) )

Agora vamos inserir alguns dados nas tabelas criadas a fim de podermos reproduzir nossos exemplos.
insert into empregados(codigo_empregado,nome) values(1,'Luis') insert into empregados(codigo_empregado,nome) values(2,'Marina') insert into empregados(codigo_empregado,nome) values(3,'Letcia') insert into empregados(codigo_empregado,nome) values(4,'Gustavo') insert into empregados(codigo_empregado,nome) values(5,'Mateus') insert into pagamentos(codigo_empregado,valor) values(1,100) insert into pagamentos(codigo_empregado,valor) values(1,200) insert into pagamentos(codigo_empregado,valor) values(3,300) insert into pagamentos(codigo_empregado,valor) values(5,400) insert into pagamentos(codigo_empregado,valor) values(5,500) insert into descontos(codigo_empregado,valor) values(1,50) insert into descontos(codigo_empregado,valor) values(2,20) insert into descontos(codigo_empregado,valor) values(5,30)

Agora que j temos os dados populados na tabela, vamos ver um exemplo de Inner Join.
select e.nome, p.valor as pagamento from empregados as e INNER JOIN pagamentos as p ON e.codigo_empregado = p.codigo_empregado

Apesar de termos cinco empregados na tabela, ele mostrou apenas trs, o motivo que apenas estes trs tem pagamentos. Veja que o inner join fez uma juno entre empregados e pagamentos e desconsiderou os empregado sem pagamentos.

Vamos a outro exemplo de Inner join


select e.nome, p.valor as pagamento, d.valor as desconto from empregados as e INNER JOIN pagamentos as p ON e.codigo_empregado = p.codigo_empregado INNER JOIN descontos as d ON e.codigo_empregado = d.codigo_empregado

Neste caso apenas dois empregados foram mostrados j que inclumos na consulta os descontos, ou seja, a leitura que esta consulta fez : mostrar empregados quem tem pagamentos e descontos.

Agora veremos os exemplos de Left join


select e.nome, p.valor as pagamento from empregados as e LEFT JOIN pagamentos as p ON e.codigo_empregado = p.codigo_empregado

Os empregados 3 e 5 no tem pagamentos, mas ainda assim eles apareceram na consulta, j que a funo Left Join considera apenas a coluna da esquerda e retorna Null (nulo) quando a coluna da direita no tiver um valor correspondente.

Vamos incluir os descontos para entender melhor o left join.


select e.nome, p.valor as pagamento, d.valor as desconto from empregados as e LEFT JOIN pagamentos as p ON e.codigo_empregado = p.codigo_empregado LEFT JOIN descontos as d ON e.codigo_empregado = d.codigo_empregado

O que fizemos foi uma espcie de left join em cascata e til quando queremos partir de uma base (empregados) e listar todas as correspondncias ou no das tabelas (pagamentos e descontos) a ela relacionadas. Bom, espero que estes pequenos e simples exemplos de consultas SQL possa ter ajudado na compreenso do Left join e Inner join, j que tenho percebido que muita gente tem dificuldade de compreender as diferenas entre eles. Veja tambm Join ou Junes SQL | Inner, left, right e full outer join que explora de forma mais ampla o assunto de joins. Outros assuntos relacionados:
Filtrar dados: between, like e IN em sql server, access e mysql Banco de dados e SQL Comando select em Mysql, SQL Server e Access Left join e inner join: juno em consultas SQL Criar tabelas, alterar e apagar com create table, alter e drop Join ou Junes SQL | Inner, left, right e full outer join COMPARTILHAR |