Problemas para retornar dados inner join

18/07/2019

0

SQL

Sou nova no mundo do banco de dados e preciso de uma ajuda.

Fiz uma consulta com inner join porem nao retornou um dado de uma tabela que eu liguei.

este campo possui dado mas ele retorna como null. Gostaria de entender porque
Camila Zanquini

Camila Zanquini

Responder

Post mais votado

19/07/2019

Posta seu SQL, para facilitar a ajuda!

INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL OUTER JOIN são usado para estabelecer relação entre tabelas.

No exemplo abaixo temos a tabela funcionario e cargo. Na tabela funcionario temos o campo idCargo que se relacionado com a tebela cargo trará a descrição do cargo. Assim ao invés de repetirmos o nome do cargo na tabela funcionario gravamos o idCargo e relacionamento para buscá-lo.

Sugiro uma lida em
https://blog.masterdaweb.com/programacao-1/sql/diferenca-entre-inner-join-left-join-right-join-e-full-outer-join/


Exemplo:


declare @funcionario table (matricula int, nome varchar(30), idCargo int)
declare @cargo table (id int, descricao varchar(30))

insert into @funcionario values (1000, 'Volter', 10)
insert into @funcionario values (1000, 'Espinoza', 30)
insert into @funcionario values (1000, 'Schopenhauer', 5)
insert into @funcionario values (1000, 'Hume', null)
insert into @funcionario values (1000, 'Nietzsche', 30)

insert into @cargo values (10, 'Diretor')
insert into @cargo values (30, 'Gerente')
insert into @cargo values (5, 'Coordenador')


--No exemplo abaixo Hume não aparece pois o campo idCargo estar null e estamos usando INNER JOIN
select f.matricula, f.nome, f.idCargo, c.descricao 
from @funcionario f
inner join @cargo c on f.idCargo = c.id

--Resultado 
--matricula   nome                  idCargo     descricao
------------- ------------------------------ ----------- ------------------------------
--1000        Volter                            10          Diretor
--1000        Espinoza                       30          Gerente
--1000        Schopenhauer                5           Coordenador
--1000        Nietzsche                      30          Gerente

--No exemplo abaixo Hume APARECE, apesar do campo idCargo estar null e estamos usando LEFT JOIN
--Assim virão todos os registros da tabela @funcionario e da tabela @cargo somente onde haja equivalência
select f.matricula, f.nome, f.idCargo, c.descricao 
from @funcionario f
left join @cargo c on f.idCargo = c.id

--Resultado
--matricula   nome                           idCargo     descricao
------------- ------------------------------ ----------- ------------------------------
--1000        Volter                         10          Diretor
--1000        Espinoza                    30          Gerente
--1000        Schopenhauer            5           Coordenador
--1000        Hume                     NULL        NULL
--1000        Nietzsche                   30          Gerente



Jothaz

Jothaz
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar