Fórum inner join 3 tabelas com 1 vazia. #605907
09/10/2019
0
olá galera,
estou efetuando uma consulta para trazer os dados de 3 tabelas em um registro, até ai tudo bem traz corretamente quando tem registro nas 3, quando uma não tem registro não traz da outras duas.
exemplo. tabela1 Saida
tabela2 Saida_Itens
tabela3 Saida_Serviço
se tem registro na tabela2 e na tabela3 traz normal ,
se não tem na tabela3 ele não apresenta os dados da tabela1 e tabela2 .
sql que estou usando.
select s.cdSaida, s.data, s.cdcliente, s.cliente_nome,
si.cdproduto, si.descricao, si.qte, si.valor Valor_Produto, si.prod_vdesc Desc_Produto, si.total Total_Produto,
ss.servico, ss.valor Valor_Servico, ss.total Total_Servico
from saida s
inner join saidaitens si on (s.cdsaida=si.cdsaida)
inner join saidaservico ss on (s.cdsaida=ss.cdsaida)
where s.placa = ''SEMPLACA''
estou efetuando uma consulta para trazer os dados de 3 tabelas em um registro, até ai tudo bem traz corretamente quando tem registro nas 3, quando uma não tem registro não traz da outras duas.
exemplo. tabela1 Saida
tabela2 Saida_Itens
tabela3 Saida_Serviço
se tem registro na tabela2 e na tabela3 traz normal ,
se não tem na tabela3 ele não apresenta os dados da tabela1 e tabela2 .
sql que estou usando.
select s.cdSaida, s.data, s.cdcliente, s.cliente_nome,
si.cdproduto, si.descricao, si.qte, si.valor Valor_Produto, si.prod_vdesc Desc_Produto, si.total Total_Produto,
ss.servico, ss.valor Valor_Servico, ss.total Total_Servico
from saida s
inner join saidaitens si on (s.cdsaida=si.cdsaida)
inner join saidaservico ss on (s.cdsaida=ss.cdsaida)
where s.placa = ''SEMPLACA''

Marcio
Curtir tópico
+ 0
Responder
Post mais votado
10/10/2019
pra obter o resultado desejado, você não pode usar INNER. esta cláusula diz que só deve aparecer se o registro existir na tabela.
para o seu caso é indicado o uso de LEFT.
você pode utilizar a função COALESCE() pra melhorar a apresentação do resultado, afim de evitar que sejam apresentados conteúdos NULL.
para o seu caso é indicado o uso de LEFT.
1 2 3 4 5 6 7 8 9 10 11 12 | select s.cdSaida, s.data, s.cdcliente, s.cliente_nome, si.cdproduto, si.descricao, si.qte, si.valor Valor_Produto, si.prod_vdesc Desc_Produto, si.total Total_Produto, ss.servico, ss.valor Valor_Servico, ss.total Total_Servico from saida s left join saidaitens si on (s.cdsaida=si.cdsaida) left join saidaservico ss on (s.cdsaida=ss.cdsaida) where s.placa = '' SEMPLACA '' |
Emerson Nascimento

Responder
Gostei + 1
Mais Posts
10/10/2019
Marcio
Obrigado, Emerson Nascimento,
testei aqui e ficou top.
obrigado pela ajuda.
testei aqui e ficou top.
obrigado pela ajuda.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)