Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida em um select com count


cezarhlima

Pergunta

Tenho um select que pega todas as placas duplicadas no meu banco, mas agora preciso saber o código do cliente que fica em outra tabela, o problema é que em muitos casos a placa duplicada é de clientes diferentes, então nestes casos o select abaixo não traz nenhuma informação.

select pf.placa, count(pf.placa), p.codigo from pessoa_frota pf, pessoa p where p.grid=pf.pessoa group by pf.placa, p.codigo having count(pf.placa)>1;

Como posso fazer um select para buscar todas as placas duplicadas e os clientes de cada placa?

Obrigado!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
select pf.placa, pl.total, p.codigo
from
    pessoa p
    inner join
    pessoa_frota pf on p.grid = pf.pessoa
    inner join (
        select placa, count(*) as total
        from pessoa_frota
        group by placa having count(placa) > 1
    ) pl on pl.placa = pf.placa
order by p.grid, pl.placa

Link para o comentário
Compartilhar em outros sites

  • 0
select pf.placa, pl.total, p.codigo
from
    pessoa p
    inner join
    pessoa_frota pf on p.grid = pf.pessoa
    inner join (
        select placa, count(*) as total
        from pessoa_frota
        group by placa having count(placa) > 1
    ) pl on pl.placa = pf.placa
order by p.grid, pl.placa

Deu certo desta maneira, muito obrigado!

Apenas mais uma dúvida, tem como fazer um select para aparecer na mesma linha o código de todas as pessoas dessa frota? Pois desta maneira aparece duas vezes o count.

Link para o comentário
Compartilhar em outros sites

  • 0
select pf.placa, pl.total, array_agg(p.codigo) as codigo
from
    pessoa p
    inner join
    pessoa_frota pf on p.grid = pf.pessoa
    inner join (
        select placa, count(*) as total
        from pessoa_frota
        group by placa having count(placa) > 1
    ) pl on pl.placa = pf.placa
group by pf.placa, pl.total
order by pf.placa

Editado por Kakao
Link para o comentário
Compartilhar em outros sites

  • 0
select pf.placa, pl.total, array_agg(p.codigo) as codigo
from
    pessoa p
    inner join
    pessoa_frota pf on p.grid = pf.pessoa
    inner join (
        select placa, count(*) as total
        from pessoa_frota
        group by placa having count(placa) > 1
    ) pl on pl.placa = pf.placa
group by pf.placa, pl.total
order by pf.placa

Deu erro no array_agg nesse segundo select, mas o primeiro já serviu, muito obrigado Kakao.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...