Entendendo Outer Joins SQL Porto Seguro, Bahia

Aprenda a usar o outer joins de maneira correta. O autor explica os comandos SQL. Entenda também sobre o produto cartesiano.

W.v. Comercio Atacadista de Antenas Ltda
(75) 3488-2210
etr Gonçalo,S, 690, Prq Panorama
Feira de Santana, Bahia

Dados Divulgados por
Ponto Ar Climatizacao Ltda
(71) 3328-5433
r Tuiuti, 214, Fds, Dois de Julho
Salvador, Bahia

Dados Divulgados por
Eletrométodo Rigaud Representação
(71) 3321-3687
av 7 de Setembro, 71 sl 303 São Bento
Salvador, Bahia

Dados Divulgados por
Ppl Comercial Eletronica Ltda
(71) 3328-1070
r Portão da Piedade, 155, Shopping Center Lapa Lj 154, Barris
Salvador, Bahia

Dados Divulgados por
games
(75) 3422-6903
www.lojaalfainformatica.com.br
alagoinhas, Bahia
 
Multsom Comercio e Servicos Eletronicos Ltda
(71) 3213-5006
av Rafael,S, 2559, São Marcos
Salvador, Bahia

Dados Divulgados por
Tecnobal Equipamentos Eletronicos Ltda Me
(71) 3218-1544
r Rio Paraguaçu, 636, Itacaranha
Salvador, Bahia

Dados Divulgados por
Mix Comercio e Manutencao Ltda
(71) 3329-2783
r Salete, 64, Tr, Barris
Salvador, Bahia

Dados Divulgados por
Invicta Comércio e Representações
(71) 3241-2844
Est Liberdade, 250 s 302 Liberdade
Salvador, Bahia

Dados Divulgados por
Indústria e Comércio de Eletrônico Poly Zony Ltda
(75) 3481-4747
r Jasmim, 240, Mangabeira
Feira de Santana, Bahia

Dados Divulgados por
Dados Divulgados por

Entendendo Outer Joins SQL

Participo de algumas listas de discussão sobre PHP e percebi que muitos desenvolvedores têm dúvidas a respeito de comandos SQL, não sabem ou não utilizam de forma correta os outer joins.

Por isso, decidi fazer um post sobre esse assunto explicando como utilizar o left outer join, right outer join, natural join, cross join ou inner join (mais utilizado).

Para que servem os outer joins?

Servem para fazer as junções entre duas ou mais tabelas, cruzando informações, combinando registros, testando desigualdades.

Por que cruzar dados?

Quando pensamos em armazenamento de dados, não podemos sair criando tabelas sem uma avaliação e sem a criação de um modelo ER (Entidade Relacionamento), e uma das vantagens de pensar no modelo é evitar a repetição de dados. E como fazer isso? Distribuindo-os em mais de uma tabela de forma que possamos categorizar as repetições.

Se você olhar o modelo abaixo, existe uma tabela de programadores e uma de empresas, note que as duas estão relacionadas. Guardo na tabela programadores somente um código que identifica a empresa em que o programador trabalha. Fiz isso em virtude da possibilidade de ter vários programadores relacionados a mesma empresa, assim evito ter que escrever várias vezes o nome da empresa (texto ocupa mais espaço que número) e evito que a mesma empresa seja escrita de maneiras diferentes, dificultando assim, por exemplo, uma busca. Porém, agora para recuperar esses dados será necessário utilizar junções.

modelo

empresas programadores_linguagens
programador linguagens

Cruzando Dados

1 - Produto Cartesiano

Esse não é bem um tipo de junção, é conhecido como conexão cruzada, ou seja, resulta no cruzamento de cada linha de uma tabela com todas as linhas de outra tabela.

SELECT p.nome, l.nome FROM programadores p CROSS JOIN linguagens l;

cross

O resultado desta consulta gera 36 linhas de combinações. Obs.: Esse tipo de junção não é muito utilizado.

Para obter o mesmo resultado podemos utilizar outras duas sintaxes: retirar o CROSS JOIN e inserir uma vírgula (,) ou usar o INNER JOIN sem a condição de comparação (ON). O resultado será o mesmo.

SELECT p.nome, l.nome FROM programadores p, linguagens l;

SELECT p.nome, l.nome FROM programadores p INNER JOIN linguagens l;

Clique aqui para ler este artigo na Profissionais Ti