Fórum Consulta sql com remoção de duplicidade por contato/cliente #319749
22/04/2006
0
Tenho banco Firebird 1.5 e to precisando fazer um filtro nas seguintes tabelas:
CLIENTE
IDCLIENTE
FANTASIA
TELEFONE
IDTELEFONE
IDCLIENTE
NOME
Tenho o seguinte sql:
E estou tendo este retorno:
O que eu preciso neste caso ai é que nao apareca na quarta linha nomvamente o nome MARCELO MOREIRA. O que acontece é que para o cliente EASY SISTEMAS o contato MARCELO MOREIRA foi cadastrado duas vezes mas com numeros de telefone diferente. Entao a duplicidade no cadastro esta certo mesmo ... eu so quero elimina-lo da consulta.
Se alguem puder me ajudar ...
valewss
Mmoreira
Curtir tópico
+ 0Posts
22/04/2006
Motta
select TEL.NOME, TEL.IDTELEFONE, TEL.IDCLIENTE, CLI.FANTASIA from TELEFONE TEL left join CLIENTE CLI on (TEL.IDCLIENTE = CLI.IDCLIENTE) and tel.idtelefone = (select max(idtelefone) from telefone tel2 where tel2.idcliente = tel.idcliente) group by 1,2,3,4 order by CLI.FANTASIA, TEL.NOME
tenta isto ...
vai trazer o tel de maior codigo
Gostei + 0
24/04/2006
Mmoreira
O sql que vc me passou não retornou as informações como eu preciso. A duplicidade dos contatos ainda esta ocorrendo.
Gostei + 0
24/04/2006
Motta
Gostei + 0
24/04/2006
Emerson Nascimento
select TEL.NOME, min(TEL.IDTELEFONE) IDTELEFONE, TEL.IDCLIENTE, CLI.FANTASIA from TELEFONE TEL left join CLIENTE CLI on (TEL.IDCLIENTE = CLI.IDCLIENTE) group by TEL.NOME, TEL.IDCLIENTE, CLI.FANTASIA order by CLI.FANTASIA, TEL.NOME
você pode querer exibir o maior id do telefone. se sua opção for essa, altere para MAX(TEL.IDTELEFONE)
Gostei + 0
24/04/2006
Mmoreira
Cara funcionou blzinha. Resolveu meu problema.
Fico muito agradecido.
valewsss
Gostei + 0
27/04/2006
Mmoreira
Só completando, estou precisando colocar mais uma coluna na minha consulta, a coluna: TEL.TELEFONE então fiz assim:
select TEL.NOME, min(TEL.IDTELEFONE) IDTELEFONE, TEL.IDCLIENTE, TEL.EMAIL, TEL.TELEFONE, /* Adicionei aqui */ CLI.FANTAZIA from TELEFONE TEL left join CLIENTE CLI on (TEL.IDCLIENTE = CLI.IDCLIENTE) group by TEL.NOME, TEL.IDCLIENTE, TEL.EMAIL, TEL.TELEFONE, /* Adicionei aqui */ CLI.FANTAZIA order by TEL.NOME, CLI.FANTAZIA
Depois q fiz isso as duplicidades estam ocorrendo novamente ...
pode me dar uma luz??
valew
Gostei + 0
27/04/2006
Emerson Nascimento
select TEL.NOME, TEL.IDTELEFONE, TEL.IDCLIENTE, TEL.EMAIL, TEL.TELEFONE, CLI.FANTAZIA from TELEFONE TEL left join CLIENTE CLI on (CLI.IDCLIENTE = TEL.IDCLIENTE) where TEL.IDTELEFONE in (select Min(TEL2.IDTELEFONE) from TELEFONE TEL2 group by TEL2.NOME, TEL2.EMAIL, TEL2.TELEFONE) order by TEL.NOME, CLI.FANTAZIA
acho que é isso...
P.S: para sua consulta ficar mais veloz, crie os índices necessários (se ainda não o fez)
Gostei + 0
27/04/2006
Mmoreira
tirei o
TEL2.TELEFONE
do group by e funcionou blzinha!!!
valew cara
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)