Ir para conteúdo

POWERED BY:

Arquivado

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

horacio2009

[Resolvido] priorizar determinado campo

Recommended Posts

Boa noite...

pessoal, preciso levantar uma lista de contatos de cliente, porém, tenho que dar prioridade para 0800( entre os campos cadastro, pre cadastros, e pergunta), como seria essa query???

pensei em descobrir o numero de 0800, numa query, aí, em outra, se o resultado da primeira for > 1, aí, mudo a query, partindo para outro critério...

enfim...se tiverem um ideia de como fazer isso de uma forma melhor, to aberto a sugestões...

Grande abraço a todos!!!

Horácio

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu entendi a ideia, mas não como montar isso na prática...

eu tenho esse código...

$sql = "SELECT codigo, relacao, nome, telefone, estado, cpf, cnpj, produto, ja_ligou,
		comentario, hora_, sexo, estado_civil, dia_nasc, mes_nasc, ano_nasc, situacao, confirmacao 
		FROM `negociacao` 
		WHERE ( {$concreto} ) 
		ORDER BY RAND() 
		LIMIT 1 ";
já sei que para melhorar o resultado, vou sacar o order by rand e colocar essa seq...

mas não sei como montar dentro dessa query especifica...

como eu encaixo essa sequencia dentro da query acima sabendo que os campos são 0800 cadastro, pre-cadastro e pergunta????

to perdido...gostei da ideia, mas to perdido...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma solucao para Oracle

 

SELECT NOME,FONE
FROM CONTATOS
WHERE ....
ORDER SIGN(INSTR(FONE,'0800'))

 

INSTR - RETORNA O POSIÇÃO QUE A SUBTRING FOI LOCALIZADA NA STRING

SIGN (-1 SE NEGATIVO , 0 SE 0, 1 SE POSITIVO

 

Isto fará que os "0800" fiquem ordenados antes, creio que é isto se quer, não , questão agora é traduzir para MySql

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu entendi a ideia, mas não como montar isso na prática...

eu tenho esse código...

$sql = "SELECT codigo, relacao, nome, telefone, estado, cpf, cnpj, produto, ja_ligou,
		comentario, hora_, sexo, estado_civil, dia_nasc, mes_nasc, ano_nasc, situacao, confirmacao 
		FROM `negociacao` 
		WHERE ( {$concreto} ) 
		ORDER BY RAND() 
		LIMIT 1 ";
já sei que para melhorar o resultado, vou sacar o order by rand e colocar essa seq...

mas não sei como montar dentro dessa query especifica...

como eu encaixo essa sequencia dentro da query acima sabendo que os campos são 0800 cadastro, pre-cadastro e pergunta????

to perdido...gostei da ideia, mas to perdido...

 

 

horacio, simplesmente acrescente a condição no select e ordene por ele.

 

... situacao, confirmacao, IF(telefone = 0800,1,2) seq FROM ... ORDER BY seq
Com duas prioridades por exemplo:

 

... situacao, confirmacao, IF(telefone = 0800,1,IF(telefone = '0500',2,3)) seq FROM ... ORDER BY seq

Caso tenha muitos itens que você queira fazer isso, fica melhor fazer com CASE.

 

... situacao, confirmacao, 
   (CASE numero 
      WHEN '0800' THEN 1
      WHEN '0500' THEN 2
      ELSE 3
    END) seq FROM ... ORDER BY seq

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu segui o conselho do case e fiz desse jeito

 $sql = "SELECT nome, origem, data, situacao, telefone,ficha ,produto,  profissao, estado_civil, estado, numero,sexo, dia_nasc, mes_nasc, ano_nasc, cpf, relacao,
      (CASE origem 
      WHEN '0800' THEN 1
      WHEN 'cadastro' THEN 2
      ELSE 'pre_cadastro'
      END)  
  seq  FROM negociacao  WHERE ( {$concreto} ) ORDER BY seq";
CASO eu queira outra condição, seria assim, não é:

 

 

 

  $sql = "SELECT nome, origem, data, situacao, telefone,ficha ,produto,  profissao, estado_civil, estado, numero,sexo, dia_nasc, mes_nasc, ano_nasc, cpf, relacao,
      (CASE origem 
      WHEN '0800' THEN 1
      WHEN 'cadastro' THEN 2
      WHEN 'pre_cadastro' THEN 3
	  ELSE 'pergunta' 
      END)  
  seq  FROM negociacao  WHERE ( {$concreto} ) ORDER BY seq";
estou tentando aqui e tá funcionando corretamente, porém, preciso refinar a pesquisa por data a fim de uma melhor forma der visuyalização da pesquisa, de toda forma, parece certo...

bom, por enquanto muito obrigado, quem quiser comentar mais, a vontade!!

abração a todos do fórum!!!

Horácio

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.