JOIN

1. JOIN

thiago
iceoz

(usa Debian)

Enviado em 04/05/2009 - 01:41h

Gente tenhu uma duvida. pode não ser aqui mais me tirem um duvida que tah me destruindo. como diabos funciona o join.


  


2. Humm

Thierry
thierryvdb

(usa Fedora)

Enviado em 04/05/2009 - 14:56h

Join serve para fazer a junção entre (relacionamentos )tabelas para obter um resultado em comum .

Ex:

select a.id ID_ALUNO, a.nome NOME_ALUNO, b.escola NOME_ESCOLA,b.id ID_ESCOLA
from alunos a
join escolas b
on ( a.id=b.id_alunos_fk );

O que que ele faz, o join usa como o parametro do lado esquerdo a tabela ( alunos ) e o parametro do lado direito ( escolas ).

Considere que existe um relacionamento com uma chave estrangeira na tabela escolas o qual faz referencia ao id da tabela alunos, ou seja id da tabela alunos é uma chave estrangeira para a tabela escolas (id_alunos_fk). Existem dois tipos de joins os equijoins um dos exemplos dele é o que coloquei acima , onde fazemos comparaçoes entre ids ou outros campos para obter um resultado e o nonequijoins o qual utilizamos parametros de diferença entre campos para obter um resultado ( a.id<> b.id_alunos_fk).

Velho se ficou confuso me fale.


3. hun

thiago
iceoz

(usa Debian)

Enviado em 05/05/2009 - 11:40h

Então testei aqui fiz uum join bem simples e deu certo.
mais ainda tenho duvidas.. como funfa esse negocio de left right join? outer inner?

queria saber a diferença entre os 2?

select p.nome as produto, f.nome as fabricante, p.quantidade from produtos p, fabricante f where f.id = p.fabricante_id;

para

select p.nome as produto, f.nome as fabricante, p.quantidade from produtos p join fabricantes f on (f.id = p.fabricante_id);

outra duvida em questão de sql msm... no from eu sempre faço como escrevi acima. mais com "as" tipo "fabricantes as f" tbm funciona. esse é o padrão ou o padrão é sem o "as"?


4. Sintaxe Join

Godofredo Augusto Soares
cbolovo

(usa Debian)

Enviado em 07/05/2009 - 21:45h

Olá Iceoz,

Vamos por partes...

Dúvida #1

O "inner join" é o padrão, ele retorna a junção de duas tabelas onde a condição especificada é satisfeita. Ex: retornar os funcionários e seus respectivos gerentes(os funcionários sem gerentes não serão listados).

O "outer join" é a junção onde a relação pode ou não existir de um dos lados (left ou right). Ex: retornar todos os funcionários e seus respectivos gerentes se possuirem (todos funcionários serão listados).


Dúvida #2

Quanto à diferença entre as queries abaixo, é somente de sintaxe. A utilização cláusula JOIN é SQL ANSI e a sintaxe que utiliza somente comparações é também denominada sintaxe ORACLE (minha favorita, mais clara, mais simples, mais utilizada no mercado e também funciona em todos SGBDS).

"select p.nome as produto, f.nome as fabricante, p.quantidade from produtos p, fabricante f where f.id = p.fabricante_id" (sintaxe ORACLE)

"select p.nome as produto, f.nome as fabricante, p.quantidade from produtos p join fabricantes f on (f.id = p.fabricante_id)" (sql ANSI)

Obs: O SGBD Oracle também dá suporte ao SQL ANSI.


Dúvida #3

Sim, o "as" é opcional na definição do alias.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts