SQL - diferenca entre inner e outer e left join

Top  Previous  Next

Clientes

Nome       CodCid

Joao            1

Marcos

Maria           2

Jose            1

 

Cidades

Codigo    Descricao

  1           Bauru

  2           São Paulo

  3           Campinas

 

INNER: só entraram no resultado da consulta os registros não nulos, isto é,

que são encontrados na tabela secundária.

No caso do exemplo acima, se vc usasse o comando:

SELECT Cli.Nome, Cid.Descricao

FROM Clientes Cli

INNER JOIN Cidades Cid ON (Cli.CodCid=Cid.Codigo)

Isto retornaria os registros:

Joao Bauru

Maria São Paulo

Jose Bauru

O Marcos não entraria pois não foi encontrado a cidade

 

OUTER: entraram no resultado da consulta todos os registros da tabela da

esquerda ou direita, onde esquerda seria a tabela principal e direita a

secundaria.

No caso do exemplo acima, se vc usasse o comando:

SELECT Cli.Nome, Cid.Descricao

FROM Clientes Cli

LEFT  OUTER JOIN Cidades Cid ON (Cli.CodCid=Cid.Codigo)

Isto retornaria os registros:

Joao Bauru

Marcos

Maria São Paulo

Jose Bauru

O Marco entraria mesmo sem cidade

 

Agora se você usar RIGTH ao invés de LEFT ele terá outro comportamento, se

não me engano fará com que a tab Cidades se comporte como se fosse a

principal, mas não tenho certeza pois nunca usei.