Ir para conteúdo
  • 0

Inner Join trazendo dados duplicados


kleberfernandes

Pergunta

  • Alunos

Olá pessoal, montei uma query que será minha fvendas com todos os dados necessários para uma análise que estou fazendo, porém, filtrando um período notei que as linhas estão duplicando e com isso, o valor total está muito diferente do real.

Podem me ajudar?

Segue a query abaixo e os primeiros resultados mostrando as duplicidades.

 

Desde já agradeço!

 

select 
    pv.IdPedidoDeVenda, 
    pv.DtEmissao, 
    pv.StPedidoDeVenda, 
    p.CdChamada as IdCliente, 
    pe.IdUF, 
    pvi.IdProduto,
    pvi.QtAtendida,
    pvi.VlUnitario,
    pvi.VlDescontoItem,
    pvi.VlDescontoRateado,
    pvi.VlFreteRateado,
    pvi.VlItem,
    op.NmOperacao 
    from dbo.PedidoDeVenda pv
inner join dbo.operacao op on pv.IdOperacao = op.idoperacao
inner join dbo.pessoa p on pv.IdPessoaCliente = p.IdPessoa
inner join dbo.PessoaEndereco pe on p.IdPessoa = pe.IdPessoa
inner join dbo.PedidoDeVendaItem pvi on pv.IdPedidoDeVenda = pvi.IdPedidoDeVenda
where pv.StPedidoDeVenda = 'T' and pv.DtEmissao between '01/08/2023' and '31/08/2023'

 

RESULTADO

 

IdPedidoDeVenda    DtEmissao    StPedidoDeVenda    IdCliente    IdUF    IdProduto    QtAtendida
00A0001DSQ    2023-08-01 00:00:00.000    T    1322    RJ    00A00000RD    30
00A0001DSQ    2023-08-01 00:00:00.000    T    1322    RJ    00A00000RD    30
00A0001DSW    2023-08-01 00:00:00.000    T    5380    PA    00A0001ZN6    4
00A0001DSW    2023-08-01 00:00:00.000    T    5380    PA    00A0001ZN7    3
00A0001DST    2023-08-01 00:00:00.000    T    8443    MG    00A00000VQ    100
00A0001DST    2023-08-01 00:00:00.000    T    8443    MG    00A00000VR    100
 

 

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Você chegou verificar em suas tabelas que fazem o join se você possui duas vezes o mesmo id. Exemplo: 

Na tabela  dbo.PedidoDeVendaItem pvi, verifique se IdPedidoDeVenda ele aparece  mais de uma vez na tabela. Isso faz com que a tabela que você está fazendo o join repita a informação!

De uma olhada nesse post: https://www.homehost.com.br/blog/tutoriais/mysql/join-sql/


image.png.1832bce97a0b213cceb4980b730ad406.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
4 horas atrás, kleberfernandes disse:

Olá pessoal, montei uma query que será minha fvendas com todos os dados necessários para uma análise que estou fazendo, porém, filtrando um período notei que as linhas estão duplicando e com isso, o valor total está muito diferente do real.

Podem me ajudar?

Segue a query abaixo e os primeiros resultados mostrando as duplicidades.

 

Desde já agradeço!

 

select 
    pv.IdPedidoDeVenda, 
    pv.DtEmissao, 
    pv.StPedidoDeVenda, 
    p.CdChamada as IdCliente, 
    pe.IdUF, 
    pvi.IdProduto,
    pvi.QtAtendida,
    pvi.VlUnitario,
    pvi.VlDescontoItem,
    pvi.VlDescontoRateado,
    pvi.VlFreteRateado,
    pvi.VlItem,
    op.NmOperacao 
    from dbo.PedidoDeVenda pv
inner join dbo.operacao op on pv.IdOperacao = op.idoperacao
inner join dbo.pessoa p on pv.IdPessoaCliente = p.IdPessoa
inner join dbo.PessoaEndereco pe on p.IdPessoa = pe.IdPessoa
inner join dbo.PedidoDeVendaItem pvi on pv.IdPedidoDeVenda = pvi.IdPedidoDeVenda
where pv.StPedidoDeVenda = 'T' and pv.DtEmissao between '01/08/2023' and '31/08/2023'

 

RESULTADO

 

IdPedidoDeVenda    DtEmissao    StPedidoDeVenda    IdCliente    IdUF    IdProduto    QtAtendida
00A0001DSQ    2023-08-01 00:00:00.000    T    1322    RJ    00A00000RD    30
00A0001DSQ    2023-08-01 00:00:00.000    T    1322    RJ    00A00000RD    30
00A0001DSW    2023-08-01 00:00:00.000    T    5380    PA    00A0001ZN6    4
00A0001DSW    2023-08-01 00:00:00.000    T    5380    PA    00A0001ZN7    3
00A0001DST    2023-08-01 00:00:00.000    T    8443    MG    00A00000VQ    100
00A0001DST    2023-08-01 00:00:00.000    T    8443    MG    00A00000VR    100
 

 

Tente com distinct no select , SELECT DISTINCT e o resto da sua query.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Esses valores seus repetem sem fazer join?

Verifique pois ao fazer join em uma tabela se ela possuir duas vezes a mesma chave na tabela em que você está fazendo join o valor se repete!

13 horas atrás, kleberfernandes disse:

Olá pessoal, montei uma query que será minha fvendas com todos os dados necessários para uma análise que estou fazendo, porém, filtrando um período notei que as linhas estão duplicando e com isso, o valor total está muito diferente do real.

Podem me ajudar?

Segue a query abaixo e os primeiros resultados mostrando as duplicidades.

 

Desde já agradeço!

 

select 
    pv.IdPedidoDeVenda, 
    pv.DtEmissao, 
    pv.StPedidoDeVenda, 
    p.CdChamada as IdCliente, 
    pe.IdUF, 
    pvi.IdProduto,
    pvi.QtAtendida,
    pvi.VlUnitario,
    pvi.VlDescontoItem,
    pvi.VlDescontoRateado,
    pvi.VlFreteRateado,
    pvi.VlItem,
    op.NmOperacao 
    from dbo.PedidoDeVenda pv
inner join dbo.operacao op on pv.IdOperacao = op.idoperacao
inner join dbo.pessoa p on pv.IdPessoaCliente = p.IdPessoa
inner join dbo.PessoaEndereco pe on p.IdPessoa = pe.IdPessoa
inner join dbo.PedidoDeVendaItem pvi on pv.IdPedidoDeVenda = pvi.IdPedidoDeVenda
where pv.StPedidoDeVenda = 'T' and pv.DtEmissao between '01/08/2023' and '31/08/2023'

 

RESULTADO

 

IdPedidoDeVenda    DtEmissao    StPedidoDeVenda    IdCliente    IdUF    IdProduto    QtAtendida
00A0001DSQ    2023-08-01 00:00:00.000    T    1322    RJ    00A00000RD    30
00A0001DSQ    2023-08-01 00:00:00.000    T    1322    RJ    00A00000RD    30
00A0001DSW    2023-08-01 00:00:00.000    T    5380    PA    00A0001ZN6    4
00A0001DSW    2023-08-01 00:00:00.000    T    5380    PA    00A0001ZN7    3
00A0001DST    2023-08-01 00:00:00.000    T    8443    MG    00A00000VQ    100
00A0001DST    2023-08-01 00:00:00.000    T    8443    MG    00A00000VR    100
 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
17 horas atrás, Ezequiel Pedreira disse:

Tente com distinct no select , SELECT DISTINCT e o resto da sua query.

@Ezequiel Pedreira obrigado pela ajuda, mas ao colocar o distinct no início da query, quando eu tenho vários pedidos feitos na mesma data, ele só consta um e o meu problema está nos produtos dentro do pedido. Os produtos estão vindo duplicados.

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...