cópia de um post que fiz em ASP a um tempo atras. resolvi postar aqui pra facilitar o acesso.
Nunca vi isso em escola, apostila nada, então essa explicacao pode não estar 100% correta:
Existem dois tipo de JOIN, o INNER JOIN e o OUTER JOIN. o OUTER JOIN pode ser de tres tipos: LEFT OUTER JOIN, RIGHT OUTER JOIN ou FULL OUTER JOIN. Ou, pra simplificar: LEFT JOIN, RIGHT JOIN ou FULL JOIN.
Pra explicar fica mais facil com um exemplo. Faz de conta que eu tenho essas duas tabelas:
Tabela X
Codigo Nome
-------------------
1 kuroi
2 dackale
3 xxxx
Tabela Y
Codigo Descricao
--------------------
1 a
4 b
5 c
O INNER JOIN seleciona apenas os registros em comum entre AS DUAS TABELAS.
Exemplo:
Select * from X INNER JOIN Y ON X.Codigo = Y.Codigo
Vai voltar:
X.Codigo Nome Y.Codigo Descricao ------------------------------------------ 1 kuroi 1 a[/code]
Agora, o LEFT JOIN seleciona todos registro que estiverem na tabela da esquerda do JOIN, não importa se existem na segunda tabela ou não. Exemplo:
[code]Select * from X LEFT JOIN Y ON X.Codigo = Y.Codigo
Vai voltar:
X.Codigo Nome Y.Codigo Descricao ------------------------------------------ 1 kuroi 1 a 2 dackale - NULL - - NULL - 3 xxxx - NULL - - NULL -[/code]
Onde - NULL - signfica valor nulo.
Agora, o RIGHT JOIN faz o contrário, ele seleciona todos os registros da tabela da direita:
[code]Select * from X RIGHT JOIN Y ON X.Codigo = Y.Codigo
Vai voltar:
X.Codigo Nome Y.Codigo Descricao ------------------------------------------ 1 kuroi 1 a - NULL - - NULL - 4 b - NULL - - NULL - 5 C[/code]
Note que
[code]Select X.Codigo, Nome, Y.Codigo, Descricao from X LEFT JOIN Y ON X.Codigo = Y.Codigo
é a mesma coisa que
Select X.Codigo, Nome, Y.Codigo, Descricao from Y RIGHT JOIN X ON X.Codigo = Y.Codigo
O FULL JOIN seleciona todos os registros de todas as tabelas. Atencao pra quem esta utilizando outro banco que não o SQL, sei que o FULL JOIN não funciona em Access e tb não testei em outros como MySQL, Oracle, etc. Minha unica certeza é q funciona no SQL Server.
Select * from X FULL JOIN Y ON X.Codigo = Y.Codigo
vai voltar:
X.Codigo Nome Y.Codigo Descricao ------------------------------------------ 1 kuroi 1 a 2 dackale - NULL - - NULL - 3 xxxx - NULL - - NULL - - NULL - - NULL - 4 b - NULL - - NULL - 5 c[/code]
EDITADO:
opa valeu, andreia. não conhecia o CROSS JOIN antes, mas to editando o tópico pra por a explicacao aqui.
o CROSS JOIN cruza todos os registros da primeira tabela com todos os registros da segunda.
[code]Select * from X CROSS JOIN Y
é o mesmo q
Select * from X, Y
e vai voltar:
X.Codigo Nome Y.Codigo Descricao ------------------------------------------ 1 kuroi 1 a 2 dackale 1 a 3 xxxx 1 a 1 kuroi 4 b 2 dackale 4 b 3 xxxx 4 b 1 kuroi 5 c 2 dackale 5 c 3 xxxx 5 c[/code]
Pergunta
kuroi
cópia de um post que fiz em ASP a um tempo atras. resolvi postar aqui pra facilitar o acesso.
Nunca vi isso em escola, apostila nada, então essa explicacao pode não estar 100% correta:
Existem dois tipo de JOIN, o INNER JOIN e o OUTER JOIN. o OUTER JOIN pode ser de tres tipos: LEFT OUTER JOIN, RIGHT OUTER JOIN ou FULL OUTER JOIN. Ou, pra simplificar: LEFT JOIN, RIGHT JOIN ou FULL JOIN.
Pra explicar fica mais facil com um exemplo. Faz de conta que eu tenho essas duas tabelas:
O INNER JOIN seleciona apenas os registros em comum entre AS DUAS TABELAS.
Exemplo:
Vai voltar: Vai voltar: Vai voltar: é a mesma coisa que O FULL JOIN seleciona todos os registros de todas as tabelas. Atencao pra quem esta utilizando outro banco que não o SQL, sei que o FULL JOIN não funciona em Access e tb não testei em outros como MySQL, Oracle, etc. Minha unica certeza é q funciona no SQL Server. vai voltar: é o mesmo q e vai voltar: Editado por kuroiLink para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.