quarta-feira, 11 de janeiro de 2012

Conexão Externa


 CONEXÃO EXTERNA ESQUERDA
A conexão externa esquerda combina CADA LINHA na tabela ESQUERDA com uma linha da tabela direita.
Com uma consulta interna, você está comparando linhas de duas tabelas, mas a ordem destas duas tabelas não importa.
Uma conexão Externa E ESQUERDA pega todas as linhas da tabela esquerda e combina com as linhas da tabela DIREITA.
É útil quando a tabela esquerda e a tabela direita possuem um relacionamento um-para-muitos.

Na CONEXÃO EXTERNA ESQUERDA, a tabela que vem depois de FROM e ANTES da conexão é uma tabela ESQUERDA, e a tabela que vem depois da conexao e uma TABELA DIREITA.

SELECT g.garoto, b.brinquedo
FROM garotas g LEFT OUTER JOIN brinquedos b
ON g.id_brinquedo = b.id_brinquedo;



Um valor NULL nos resultados de uma conexão externa esquerda quer dizer que a tabela direita não possui nenhum valor correspondente a tabela esquerda.
Se invertermos as tabelas o resultado muda.

SELECT g.garota, b.brinquedo
FROM brinquedos b LEFT OUTER JOIN garotas g
ON b.id_brinquedo = g.id_brinquedo



CONEXÃO EXTERNA DIREITA

 A conexão externa direita avalia a tabela da direita em contraposição a tabela da esquerda.
As duas consultas abaixo fazem da tabela garotas a tabela esquerda.

SELECT g.garota, b.brinquedo
FROM brinquedos b – A tabela da direita.
RIGTH OUTER JOIN garotas g – A tabela da esquerda.
ON g.id_brinquedo = b.id_brinquedo;

SELECT g.garoto, b.brinquedo
FROM garotas g – A tabela a esquerda.
LEFT OUTER JOIN brinquedos b – A tabela a direita.
ON g.id_brinquedo = b.id_brinquedo;

Alterar a palavra ESQUERDA (LEFT) para direita (RIGTH) é mais fácil que alterar a ordem das tabelas em sua consulta.