Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
JOIN's (Junções) no SQL Server, são permitidas nas claúsulas FROM e WHERE, é recomendado o uso na cláusula FROM por questões de performance e melhor organização do código.
vejamos um simples exemplo de join com inner, left, right e full:
Dados para os Testes:
declare @table1 table (cod char(1)) declare @table2 table (cod char(1)) insert into @table1 (cod) values ('A') insert into @table2 (cod) values ('B') insert into @table1 (cod) values ('B') insert into @table2 (cod) values ('C')Select da tabela 1 e tabela 2:
print 'TABELA 1' select * from @table1 print 'TABELA 2' select * from @table2resultado:
>
TABELA 1
cod
----
A
B
(2 row(s) affected)
TABELA 2
cod
----
B
C
(2 row(s) affected)
IMPORTANTE: Observer que o código "B" aparece nas tuas tabelas, o código "A" somente na tabela 1 e o código "C" somente na tabela 2
Junções na cláusula FROM:
print 'INNER JOIN --> somente mostra o que esta na table1 e table2 com a mesma chave' select * from @table1 t1 inner join @table2 t2 on t1.cod = t2.codretorna:
>
cod cod
---- ----
B B
(1 row(s) affected)
print 'LEFT JOIN --> mostra o que esta na table1 e table2 com a mesma chave e tudo o que esta somente na table1' select * from @table1 t1 left join @table2 t2 on t1.cod = t2.codretorna:
>
cod cod
---- ----
A NULL
B B
(2 row(s) affected)
print 'RIGHT JOIN --> mostra o que esta na table1 e table2 com a mesma chave e tudo o que esta somente na table2' select * from @table1 t1 right join @table2 t2 on t1.cod = t2.codretorna:
>
cod cod
---- ----
B B
NULL C
(2 row(s) affected)
print 'FULL JOIN --> mostra os dados das duas tabelas table1 e table2' select * from @table1 t1 full join @table2 t2 on t1.cod = t2.codretorna:
>
cod cod
---- ----
B B
NULL C
A NULL
(3 row(s) affected)
junções na cláusula WHERE:
print 'INNER JOIN = --> somente mostra o que esta na table1 e table2 com a mesma chave' select * from @table1 t1, @table2 t2 where t1.cod = t2.codretorna:
>
cod cod
---- ----
B B
(1 row(s) affected)
print 'LEFT JOIN = --> mostra o que esta na table1 e table2 com a mesma chave e tudo o que esta somente na table1' select from @table1 t1, @table2 t2 where t1.cod *= t2.codretorna:
>
cod cod
---- ----
A NULL
B B
(2 row(s) affected)
print 'RIGHT JOIN = --> mostra o que esta na table1 e table2 com a mesma chave e tudo o que esta somente na table2' select from @table1 t1, @table2 t2 where t1.cod =* t2.codretorna:
>
cod cod
---- ----
B B
NULL C
(2 row(s) affected)
AUTOR: "eriva_br"
Dúvidas, criticas, contribuições, correções e adições seram bem vindas.
Carregando comentários...