Ir para conteúdo

POWERED BY:

Arquivado

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

William Espindola

[Resolvido] Consulta com critérios multiplos

Recommended Posts

Ola Pessoal!

 

Estou precisando do senguinte apoio:

 

Preciso fazer um consulta em um banco MySql, esta tendo vários critérios.

 

Ex:

Picture%203.png

 

Aqui nesta é possivel fazer um consulta utilizando uma porrada de critérios, não preciso de tudo isto, mas pelo menos de uns 5.

 

Tentei fazer alguma coisa com Join, mas sem sucesso.

 

Abracos, Agradeço desde já!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão, é o seguinte, a sulta que estou fazendo tem critério de aberto, pendente e fechado, até ai beleza que estou fazendo uma ganb com o IF para chegar nos select`s, porém, preciso incluir mas 3 critérios.

 

De uma olhada no select:

 

SELECT c.id_chamado, c.cham_id_empresa, c.empresa, c.cham_num_equipamento, c.cham_id_equipamento, c.data_agenda, c.status,c.operador, c.dataencerrameno, e.nome_ponto FROM chamados c JOIN equipamentos e ON e.id_equipamento = c.cham_id_equipamento where  c.id_chamado = '$num_chamado' or e.nome_ponto like '%".$ponto."%' and c.cham_id_empresa = '$emp' and status='A'"

 

Este por exemplo é para o status aberto.

 

Vamos supor que os critérios que eu preciso incluir, seja estes:

 

empresa - A ou B ou C;

data_agenda - entre datas;

operador - Sim ou não.

 

Não sei se fui claro, mas é mais ou menos isto que procuro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera alguém poderia me ajudar, ja conseguir fazer uma parte mas não estou tendo todos os resultados, deem uma ulhada no código;

 

$str = "SELECT tbl_chamados.cha_id, tbl_chamados.cha_confirmOpera, tbl_chamados.cha_dataAgenda, tbl_chamados.cha_status, tbl_equipamentos.equ_id, tbl_equipamentos.equ_nome, tbl_equipamentos.equ_numero, tbl_empresas.emp_id, tbl_empresas.emp_nome 
FROM tbl_chamados 
INNER JOIN tbl_equipamentos ON tbl_chamados.equ_id_cha = tbl_equipamentos.equ_id 
INNER JOIN tbl_empresas ON tbl_chamados.emp_id_cha = tbl_empresas.emp_id 
WHERE tbl_chamados.cha_id = '0'";

if (isset($_POST['num_chamado'])){$str .=" OR tbl_chamados.cha_id = '".$_POST['num_chamado']."'";}
if (isset($_POST['satus_busca'])){$str .=" AND tbl_chamados.cha_status = '".$_POST['satus_busca']."'";}
if (isset($_POST['equ_uniorg'])){ $str .=" and tbl_equipamentos.equ_uniorg = '".$_POST['equ_uniorg']."'";}
if (isset($_POST['emp_id'])){     $str .=" and tbl_chamados.emp_id_cha = '".$_POST['emp_id']."'";}

 

Se eu deixar somente a primera clausula, onde compara o num_chamado, funfa, mas na hora que eu pesquiso com a seguinda da erro.

 

Da uma força ai pessoar!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

if (isset($_POST['num_chamado'])){$q .=" OR tbl_chamados.cha_id = '".$_POST['num_chamado']."'";}
if (isset($_POST['satus_busca'])){$q .=" AND tbl_chamados.cha_status = '".$_POST['satus_busca']."'";}
if (isset($_POST['equ_uniorg'])){ $q .=" and tbl_equipamentos.equ_uniorg = '".$_POST['equ_uniorg']."'";}
if (isset($_POST['emp_id'])){     $q .=" and tbl_chamados.emp_id_cha = '".$_POST['emp_id']."'";}

$str = "SELECT tbl_chamados.cha_id, tbl_chamados.cha_confirmOpera, tbl_chamados.cha_dataAgenda, tbl_chamados.cha_status, tbl_equipamentos.equ_id, tbl_equipamentos.equ_nome, tbl_equipamentos.equ_numero, tbl_empresas.emp_id, tbl_empresas.emp_nome 
FROM tbl_chamados 
INNER JOIN tbl_equipamentos ON tbl_chamados.equ_id_cha = tbl_equipamentos.equ_id 
INNER JOIN tbl_empresas ON tbl_chamados.emp_id_cha = tbl_empresas.emp_id 
WHERE tbl_chamados.cha_id = '0' {$q}";

 

tente dar um echo no $str , para ver qual foi a query que foi criada, e teste ou no SQLYog ou no PHPMyAdmin..

Compartilhar este post


Link para o post
Compartilhar em outros sites

KKKKK Ta ai galera, nunca achei que ira ser tão simples, é meio que gambiarra, mas fucniona certinho.

 

ja fiz alguns testes com CASE, e também da certo, e é mais organizado, depois vou migrar este para case, intão posto apra vocês.

 

Abraços valei pelos que ajudaram:

 

$str = "SELECT 
          tbl_chamados.cha_id, tbl_chamados.cha_confirmOpera, tbl_chamados.cha_dataAbertura, tbl_chamados.cha_dataAgenda, tbl_chamados.cha_status, 
          tbl_equipamentos.equ_id, tbl_equipamentos.equ_nome, tbl_equipamentos.equ_numero, 
          tbl_empresas.emp_id, tbl_empresas.emp_nome 
          FROM tbl_chamados 
          INNER JOIN tbl_equipamentos ON tbl_chamados.equ_id_cha = tbl_equipamentos.equ_id 
          INNER JOIN tbl_empresas ON tbl_chamados.emp_id_cha = tbl_empresas.emp_id 
          WHERE";
          if ($satus_busca!= ""){$str .=" tbl_chamados.cha_status = '".$satus_busca."'";}else{$str .=" tbl_chamados.cha_status <> 'E'";}
          if ($num_chamado!= 0){$str .=" AND tbl_chamados.cha_id = '".$num_chamado."'";}
   if ($emp_id != ""){$str .=" AND tbl_chamados.emp_id_cha = '".$emp_id."'";}
          if ($nome_ponto != ""){$str .=" AND tbl_equipamentos.equ_nome like '%".$nome_ponto."%'";}
          if ($cod_int != ""){$str .=" AND tbl_equipamentos.equ_uniorg = '".$cod_int."'";}
          if ($data_de != "" && $data_ate != ""){
	$str .=" AND tbl_chamados.cha_dataAbertura BETWEEN ('".$data_de_my."') AND ('".$data_ate_my."')";
          }else if($data_de != "" && $data_ate == ""){
        $str .=" AND tbl_chamados.cha_dataAbertura >='".$data_de_my."'";
   }else if($data_de == "" && $data_ate != ""){
        $str .=" AND tbl_chamados.cha_dataAbertura <='".$data_ate_my."'";
          }
   if ($data_ate != ""){$str .=" AND tbl_chamados.cha_dataAbertura BETWEEN '".$data_ate."' AND '".$data_ate."' ";}
   if ($usu_id != ""){$str .=" AND tbl_chamados.usu_id_cha_abertura = '".$usu_id."'";}
   if ($cha_confirmOpera != ""){echo $str .=" AND tbl_chamados.cha_confirmOpera = '".$cha_confirmOpera."'";}

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.