Ir para conteúdo
FabianoSouza

Consulta para filtro com muitas combinações

Recommended Posts

Gente, o negócio é cabeludo.

Na aplicação tem uns botões para o usuário marcar regiões de interesse: Centro, Zona Norte, Zona Sul, Zona Leste e Zona Oeste.

Ele pode marcar todas ou  nenhuma. Dentro desse universo há dezenas de combinações possíveis, umas 50 possibilidades.

 

Meu problema é como tratar isso num SELECT para poder filtrar a coluna onde guardo essa informação.

É uma coluna numérica entre 0 (para quando não existe  uma zona definida) e 5.

 

Impossível tratar isso com IF ou CASE.

 

Qual a solução?

 

Eu pensei em tentar algo com tabela temporária, fazendo isso:

1) Recupero o código das Zonas selecionadas na aplicação 
2) Crio uma tab temporária e armazeno esses valores

3) Faço  JOIN, entre a coluna codZona (da tab onde armazena esse dado)  e a coluna da tab virtual

 

Essa ideia tecnicamente funcionaria? Há outra saída mais eficiente?

 

Grato.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por flaviolucio.ti
      Boa Tarde.!
      Estou inciando em sql,
      Tenho uma tabela com dois campos que sao gravados a mesma informacao, mas em alguns casos foi gravado divergente, executei o select abaixo que retirou os duplicados agora preciso saber quais os campos sao diferentes no cliente_atacado e cliente_for 
       
      select distinct CLIENTE_ATACADO, NOME_CLIFOR_ENTREGA FROM VENDAS
       
      sei que pode ser uma duvida simples mas olhar um a um manual nao justifica pois sao mais de 100 mil registro.
      CLIENTE_ATACADO    NOME_CLIFOR
      ARIANE COMERCIO  JANICE CAMPESTRINI
      ARIANE COMERCIO   ARIANE COMERCIO          
      Nao sei como fazer para exbir so os que estao divergentes no campo 1 e campo 2.
       
      Ja procurei no google e nao consigo se alguem puder ajudar fico agradecido, desde a parte da manha estou tentando funcoes e explicacoes que estou lendo mas nao obtive sucesso!
       
       
       
       

    • Por vinitf
      Parece bem bobinho, mas sou iniciante, por isso me perdoem. Tenho uma lista com três empresas, e queria com um botão filtrar os dados (mostrar as que estão on e as que estão off) e com um outro botão contar quantas estão on e off  e mostrar na tela a quantidade). Sei que existem métodos exclusivos do JS, mas queria à princípio, utilizando for. 
      <button onclick="fil()">Filtrar dados</button> <p id="botão1"></p> <button onclick="con()">Contar dados</button> <p id="botão2"></p> var dados = [{ "Nome": "EMPRESA1", "Status": true }, { "Nome": "EMPRESA2", "Status": false }, { "Nome": "EMPRESA3", "Status": true }]; //filtrar os serviços com status igual ao parametro, NÃO USAR UNDERSCORE function filtrar(Status) { return dados.Status = true; } function fil() { document.getElementById("botão1").innerHTML = dados.filter(filtrar); } //contar a quantidade de serviços com status igual ao parametro, NÃO USAR UNDERSCORE function contar(status) { //for }  
    • Por josenilson
      Olá como faço para buscar vários resultados em um filtro em mysql, ?
      tenho esse abaixo com exemplo que me retorna apenas um resultado tipo.
      se eu consultar o nome joão e tiver dois joão antônio e joão paulo cadastrados no banco como exibo isso ?
      só esta trazendo um resultado deis de já agradeço.
      segue o código que estou utilizando como filtro ou consulta.
      <?php mysql_connect( 'localhost', 'root', 'rizeane20' ) or die ("could not connect"); mysql_select_db("sistema") or die ("could not find db !"); $output = ""; //coletando dados if (isset($_POST["search"])) { $searchq = $_POST["search"]; $searchq = preg_replace("#[^0-9a-z]#i", "",$searchq); $query = mysql_query( " SELECT * FROM login WHERE nome LIKE '%$searchq%' OR usuario LIKE '%$searchq%' OR senha LIKE '%$searchq%' OR nivel LIKE '%$searchq%' ") or die ("could not search !"); $count = mysql_num_rows($query); if ($count == 0) { $output = "there was no search results !"; }else{ while ($row = mysql_fetch_array($query)) { $nome = $row ['nome']; $usuario = $row ['usuario']; $senha = $row ['senha']; $id = $row ['idlogin']; $nivel = $row ['nivel']; $output .="$nome"; $output .="$usuario"; //$output .= '<DIV>'.$nome.' '.$usuario.' '.$senha.' '.$nivel.' </DIV>' ; } } } ?> <form action="resultado.php" method="post"> <input type="text" name="search" required class="form-control" placeholder="localizador" class="form-control"> <input type="submit" value="localizar" class="form-control"> <?php print("$output"); ?> </form> o código acima esta com a consulta e o form com o input para buscar o resultado no banco abaixo esta o código que volta com o resultado da busca, mas como eu disse ele só me retorna 1 resultado mesmo se tiver 2 ou mais no banco. <?php mysql_connect( 'localhost', 'root', 'rizeane20' ) or die ("could not connect"); mysql_select_db("sistema") or die ("could not find db !"); $output = ""; //coletando dados if (isset($_POST["search"])) { $searchq = $_POST["search"]; $searchq = preg_replace("#[^0-9a-z]#i", "",$searchq); $query = mysql_query( " SELECT * FROM login WHERE nome LIKE '%$searchq%' OR usuario LIKE '%$searchq%' OR senha LIKE '%$searchq%' OR nivel LIKE '%$searchq%' ") or die ("could not search !"); $count = mysql_num_rows($query); if ($count == 0) { $output = "there was no search results !"; }else{ while ($row = mysql_fetch_array($query)) { $nome = $row ['nome']; $usuario = $row ['usuario']; $senha = $row ['senha']; $id = $row ['idlogin']; $nivel = $row ['nivel']; $output .= '<DIV>'.$nome.' <br>'.$usuario.' <br>'.$senha.' <br>'.$nivel.' </DIV>' ; } } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Resultado Busca</title> </head> <body> <table border="1"> <tr> <td>Nome:</td> <td><?php echo $nome ?></td> </tr> <tr> <td>Usuário:</td> <td><?php echo $usuario ?></td> </tr> <tr> <td>Senha:</td> <td><?php echo $senha ?></td> </tr> <tr> <td>Nivel:</td> <td><?php echo $nivel ?></td> </tr> </table> </body> </html>
    • Por Matheus Morett
      Olá pessoal estou com um erro que presumo que seja bobo na tentativa de usar o Isotope filter, segue abaixo partes do código:

      <!! -------------------HEAD---------------------- !!>
      <head> <meta charset='UTF-8'> <script src="js/bootstrap.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <script src="js/isotope.js"></script> </head> <!! -------------------/HEAD---------------------- !!>
       
      <!! -------------------JAVA SCRIPT---------------------- !!>
      $( document ).ready(function() { /* activate jquery isotope */ var $container = $('#posts').isotope({ itemSelector : '.item', isFitWidth: true }); $(window).smartresize(function(){ $container.isotope({ columnWidth: '.col-md-2' }); }); $container.isotope({ filter: '*' }); // filter items on button click $('#filters').on( 'click', 'button', function() { alert("I am an alert box!"); var filterValue = $(this).attr('data-filter'); $container.isotope({ filter: filterValue }); }); }); <!! -------------------/JAVA SCRIPT---------------------- !!>
      <!! -------------------Filtros---------------------- !!>
      <div class='col-md-12'> <div id="filters" class="button-group"> <button id='filters' class="btn btn-default" data-filter="*">Mostrar tudo</button> <button id='filters' class="btn btn-default" data-filter=".videos">Vídeos</button> <button id='filters 'class="btn btn-default" data-filter=".fotos">Fotos</button> </div> </div> <!! -------------------/Filtros---------------------- !!>
      <!! -------------------OBJETOS A SEREM FILTRADOS---------------------- !!>
      <div class='row' id='posts'> <?php $consulta = $pdo->query("SELECT * FROM arquivos"); $id = 1; while ($linha = $consulta->fetch(PDO::FETCH_OBJ)) { $nome = $linha -> nome; $url = $linha -> url; $codigo = $linha -> codigo; $tipo = $linha -> tipo; $data = $linha -> data; if ($tipo=='Foto') { ?> <div class='item fotos col-md-2' id='<?php echo $id ?>'> <div class='thumbnail' > <h3> <?php echo $nome ?> </h3> <div style='background-color:757575'><center> <img src='fotos/<?php echo $url ?>' class='img-responsive' style='max-height:250px'> </center> </div> <i><?php echo $data ?> </i> </div> </div> <?php } if ($tipo=='Video'){ ?> <div class='item videos col-md-2' id='<?php echo $id ?>'> <div class='thumbnail' > <h3> <?php echo $nome ?> </h3> <hr> <div class="embed-responsive embed-responsive-16by9" > <video controls name='media' style='max-height:150px'> <source src="videos/<?php echo $url; ?>" style='max-height:130px'></source> </video> </div><i><?php echo $data ?> </i> </div> </div> <?php } $id = $id+1; } ?> </div> <!! -------------------/OBJETOS A SEREM FILTRADOS---------------------- !!>
       
×

Informação importante

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