Ir para conteúdo

POWERED BY:

Arquivado

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

horacio2009

problema na query

Recommended Posts

bom dia a todos!!!!

bom obrigado pelas respostas no posts anteriores, tenho acompanhado a todos e to aprendendo muito!!

obrigado!!!

bom, vamos ao que interessa, pessoal...

 

tenho essa query

 

$sql="SELECT dia_agendamento, mes_agendamento, ano_agendamento, nome,relacao, dia_nasc,email,ja_ligou, mes_nasc, ano_nasc, comentario, codigo,confirmacao, origem, data, situacao, telefone,ficha ,produto, profissao, estado_civil, estado, numero,sexo, dia_nasc, mes_nasc, ano_nasc, cpf, relacao, capture

FROM tabela WHERE solicitado = '0' AND ( {$concreto} ) AND $query AND boleto_enviado <>'1' AND capture='' AND telefone <>''

AND (ja_ligou <> 't' AND ja_ligou <> 'c') AND situacao NOT IN ('trote', 'confirmado') ORDER BY RAND()";

 

[code=auto:0]

 

bom, como vocês viram, quero que o campo capture e telefone sejam diferentes de nulo, para que eu tenha informações MINIMAS de consulta desses dados, porém, eu vejo que estou recebendo algumas coisa, SEM telefone...

eu quero saber o seguinte:

como melhoro essa query, de forma a mostrar tudo conforme eu preciso...

bom, obrigado a todos!!!

Horácio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom

Você tem que fazer a condição com parenteses.

Porque se tiver CAPTURE e não tiver TELEFONE, ele vai trazer. Então você faz assim:

 


AND (capture <> '' AND telefone <> '')

Compartilhar este post


Link para o post
Compartilhar em outros sites

montei assim:

 

$sql="SELECT dia_agendamento, mes_agendamento, ano_agendamento, nome,relacao, dia_nasc,email,ja_ligou, mes_nasc, ano_nasc, comentario, codigo,confirmacao, origem, data, situacao, telefone,ficha ,produto, profissao, estado_civil, estado, numero,sexo, dia_nasc, mes_nasc, ano_nasc, cpf, relacao, capture

FROM negociacao WHERE solicitado = '0' AND ( {$concreto} ) AND $query AND boleto_enviado <>'1' AND (ja_ligou <> 't' AND ja_ligou <> 'c' AND telefone<>'') AND situacao NOT IN ('trote', 'confirmado') AND (capture ='') ORDER BY RAND()";

 

 

e ele ainda me retornou um resultado onde o telefone é nulo...

tá certo dessa forma, correto? coloquei entre parenteses...o resultado com linha, "persistiu" bem mais, se fizer diferença...

 

ei, de souza, desculpa te corrigir, mas quando você sugeriu:

AND (capture <> '' AND telefone <> '')

 

você não quis dizer:

AND (capture ='' AND telefone <> '')???

de todo jeito acabei de mudar agora para essa forma e estou testando...quem também tiver sugestões, é só mandar!!

obrigado Dee Souza e demais membros que tem me ajudado aqui!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você disse que queria

bom, como vocês viram, quero que o campo capture e telefone sejam diferentes de nulo, para que eu tenha informações MINIMAS de consulta desses dados,

 

E na sua query você está colocando que ele esteja igual a Nulo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao tem problema

mas tipo, sua query está grande mesmo.

 

aqueles campos que você colocou no select, você precisa de todos eles ? sao todos os da tabela ? se for eh soh colocar um *

 

select * from tabela where .... and ... and

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz assim...

 

$sql="SELECT * FROM tabela WHERE solicitado = '0' AND ( {$concreto} ) AND $query AND boleto_enviado <>'1' AND (ja_ligou <> 't' AND ja_ligou <> 'c' AND capture ='' AND telefone <> '') AND situacao NOT IN ('trote', 'confirmado') ORDER BY RAND()";

 

me diga uma coisa, os critérios estão definidos, isso <>2, aquilo=8, aquele outro<>''

enfim...

porém, minha duvida aqui é:

no trecho:

AND (ja_ligou <> 't' AND ja_ligou <> 'c' AND capture ='' AND telefone <> '')

 

estou pedindo tudo diferente de algo...mas o capture está como igual a nulo...essa "discordância" de critérios pode entrar em conflito por isso???

outra coisa...

 

Uma query muito extensa como antes, pode ter alguma perda de desempenho, ou apresentar erro, ou isso dificulta apenas a edição?

de resto, tá certo, agora?, dá para melhorar???

quero deixar essa query o mais exata e correta possível então, se você (ou qualquer pessoa do forum) tiver alguma dica, sinta -se a vontade!!

obrigado por enquanto, Dee Souza...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que ser coerente nas condições. Pq ?

 

Vamos supor que um registro seu o capture esteja igual a nulo e o telefone diferente de nulo.

Dae você faz uma condição para pegar o registro que for igual a nulo e o telefone diferente de nulo.

Ele vai trazer o que ?

O que vem na condição primeiro.

 

você tem que ver bem do que você precisa. As vezes você tem que fazer mais de um select para trazer exatamente o que você quer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, então, dentro dessa ótica de prioirdades de pesquisa, montei da seguinte forma:

 

$sql="SELECT * FROM negociacao WHERE capture ='' AND solicitado = '0' AND ( {$concreto} ) AND $query AND boleto_enviado <>'1' AND (ja_ligou <> 't' AND ja_ligou <> 'c' AND telefone <> '') AND situacao NOT IN ('trote', 'confirmado') ORDER BY RAND()";

 

1° preciso que todos os captures sejam nulos, pois qualquer que seja o valor, implica em registro aberto por outro usuario

2° solicitado =0, pois não quero dados que foram excutados, digamos assim

3°concreto, isso determinar quais os tipos de registro ao quais eu tenho acesso...o valor vem de uma variável ligada a mim...

4°$query, determina a ordem se é a, b ou C...

5° já_ligou, é referente a situações que não preciso tbm

6° o telefone, é o x da questão...

e a situação , se foi trote, ou confirmado..não as quero...

 

bom, agora, então, está certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teoricamente sim!

 

Você testou, trouxe o que você queria ?

Tenta assim:

 

SELECT * FROM negociacao WHERE capture ='' AND solicitado = '0' AND ( {$concreto} ) AND $query AND boleto_enviado <>'1' AND (ja_ligou <> 't' AND ja_ligou <> 'c' OR telefone <> '') AND situacao NOT IN ('trote', 'confirmado') ORDER BY RAND()"

Compartilhar este post


Link para o post
Compartilhar em outros sites

só não entendi a parte do

 

SELECT * FROM negociacao WHERE capture ='' AND solicitado = '0' AND ( {$concreto} ) AND $query AND boleto_enviado <>'1' AND (ja_ligou <> 't' AND ja_ligou <> 'c' OR telefone <> '') AND situacao NOT IN ('trote', 'confirmado') ORDER BY RAND()"

 

qual a razão desse "or"???

Compartilhar este post


Link para o post
Compartilhar em outros sites

OR = Ou

AND = E

 

Isso E Aquilo == aqui ele filtra pelos dois

Isso Ou Aqulo == aqui ele filtra ou por um ou pelo outro. Se um nao tiver, vai no outro, se os dois tiver tudo bem

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.