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. |