Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
kuroi

Tutorial De Join

Question

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]

Edited by kuroi

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0
Guest VINY

:ninja: como eu faço para usar uma join entre tabelas de 2 bancos diferentes???

por favor me ajudem

Share this post


Link to post
Share on other sites
  • 0
Guest Danilo

SELECT * FROM BD1..TABELA A

INNER JOIN BD2..TABELA B

ON A.NOME = B.NOME

Share this post


Link to post
Share on other sites
  • 0
Guest BRASILMONTEIRO

CARA AI você VAI TER Q USAR LINK DATABASE....PROCURA AI Q você VAI ACHAR ALTOS POSTS

Share this post


Link to post
Share on other sites
  • 0
Guest william menano

select a.*,b.*

from nome_banco.dbo.nome_tabela as a inner join nome_banco.dbo.nome_tabela

on a.variavel = b.variavel

ex:

select a.nome_cliente, b.nome_dependente

from bd1.dbo.cliente as a inner join db2.dbo.dependente as b

on a.cpf = b.cpf

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148386
    • Total Posts
      643773
×
×
  • Create New...