Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

horacio2009

pesquisa que deixa "escapar" infrmação...

Recommended Posts

e aí, pessoal, tudo bom?

galera, seguinte, vou falar o que preciso:

 

eu tenho um registro do cliente

esse registro tem 3 telefones( telefone, tel2 , tel3) e cpf , além da situação do sujeito(campo "situacao", se é cliente, se é trote, se morreu, enfim...)

bom, a fim de evitar possíveis trotes e fraudes, eu quero pegar os 3 telefones, mais o cpf, e procurar qualquer registro com esses 4 dados e ver se tem algo "sujo" digamos assim...

 

bom, estou usando essa query:

 

SELECT count( situacao ) AS total, telefone, codigo, tel2, tel3, situacao, data, nome, cpf
FROM `$tabela`
WHERE situacao
IN (
'4', '5', '6'
)
AND telefone LIKE '%$telefone%'
OR tel2 LIKE '%$tel2%'
OR tel3 LIKE '%$tel3%'
AND cpf = '$cpf'
GROUP BY nome
ORDER BY data

 

bom, até aí, ele me retorna algumas informações que eu vejo que batem realmente, porém, de 5 campos, apenas 1 tinha cpf...

bom, o que eu quero...

quero melhorar essa pesquisa, de forma que ele me retorne apenas o registro com cpf...pois eu quero qualquer registro com o telefone parecido com $telefone, porém, quero um cpf igual a esse...

o que vocês sugerem para melhorar isso???

valeu pela força e constante ajuda, pessoal!!!!!

grande abraço a todos do forum!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dica, quando usar OR e AND use parenteses , tenta assim :

 

SELECT count( situacao ) AS total, telefone, codigo, tel2, tel3, situacao, data, nome, cpf
FROM `$tabela`
WHERE situacao IN ('4', '5', '6')
AND (telefone LIKE '%$telefone%' OR tel2 LIKE '%$tel2%' OR tel3 LIKE '%$tel3%')
AND cpf = '$cpf'
GROUP BY nome
ORDER BY data

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta...em primeiro lugar, muito obrigado pela dica...aqui funcionou certinho!!!]

só que agora, para complicar a vida um pouco( pra que tornar as coisas sempre fáceis, né?Rsrs)me ocorreu uma nova situação que tem que ser considerada...

o sujeito tem 3 telefones:

$telA=1

$telB=2

$telC=3

 

só que imaginemos que o sujeito está de sacanagem e ao invés de manter essa ordem (a,b,c)ele decide na hora da compra trocar a ordem dos telefones ai recebo um suposto novo cadastro com a seguinte ordem:

 

$telA=2

$telB=3

$telC=1

ou

$telA=3

$telB=1

$telC=2

 

só que os números são o mesmos, apenas as ordens foram trocadas aí, nesse caso como faço para procurar??

tem formas melhores que "telefone like '%$telA%' or '%$telb%' AND tel2 like '%$telA%' or '%$telb%'"

ou seria isso aí mesmo???

a query que uso essa mesma aí de cima mas quero deixa-la melhor do ponto de vista de perfomance/necessidade

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troca o cadastro, é mais barato atualizar do que tentar verificar se os números são o mesmos.

 

Deixe para gastar tempo numa rotina que lhe dê alguma vantagem, num caso como este simplesmente atualize o cadastro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi, Motta, tudo bem?

motta, você até tem razão, sim, sobre atualizações, o único problema nessa história é que chegam fichas de uns 5 sites, e simplismente não temos como controlar que dirá atualizar...por isso a comparação se faz necessária, é uma forma de "agrupar" o cliente com base nessa comparação de dados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não vejo outra solução do que comparar 3 a 3.

 

Talvez uma procedure/function que recebesse os 3 números e checasse a atualização, tentando uma ordenação talvez.

 

Mas, pelo que eu vi, eu faria uma nova atualização em caso de outra compra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.