terça-feira, 3 de janeiro de 2012

Conexões Internas



Uma conexão Interna e uma conexão cruzada com alguns resultados removidos por uma condicionam consulta.

Conexão Cartesiana a mais simples "CROSS JOIN".
A conexão cartesiana pega cada valor da primeira tabela e emparelha com cada valor da segunda tabela.

A conexão cruzada resulta em cada linha de uma tabela cruzada com cada linha da segunda tabela.

SELECT b.brinquedo, g.garoto
FROM brinquedos AS b CROSS JOIN garotos AS g;

Uma CONEXAO INTERNA combina os registros de duas tabelas usando operadores de comparação em uma condição. Colunas são retornadas apenas onde as linhas conectadas combinam com a condição.

Sintax:

SELECT f.nome,
               f.telefone,
               d.nome AS nome_dependente
FROM funcionario f INNER JOIN dependente d ON (f.id_funcionario = d.id_funcionario);

Conexões internas EQUIJOIN.
São as conexões que testam igualdade, veja no exemplo acima, depois da clausula ON o que liga as chaves são o símbolo de “=”. Neste caso elas testam igualdades.

Conexões internas NÃO-EQUIJOIN.
Conforme exemplo abaixo os símbolos que unem as tabelas depois da clausula ON é o “<>”, estas conexões testam por desigualdades.

Ex:
SELECT f.nome,
               f.telefone,
               d.nome AS nome_dependente
FROM funcionario f INNER JOIN dependente d ON (f.id_funcionario <> d.id_funcionario);

Conexão interna: CONEXÃO NATURAL.
Identificam colunas com nomes iguais, segue exemplo abaixo.

EX:
SELECT garotos.garoto, brinquedos.brinquedo
FROM garotos