Ir para conteúdo

Arquivado

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

marcosbruno.mb

Filtro de busca com 2 intervalos e 3 campos no banco

Recommended Posts

Pessoal bom dia...

 

Estou montando um sistema para uso pessoal, será um cadastro de imóveis.

 

Porém, em alguns momentos, eu terei um imóvel "fixo", ou seja, com valores fixos de preço, qtde de vagas, m², etc... em outros momentos, eu vou incluir um condominio por exemplo, então, o valor, qtde de vagas, m², banheiros, não serão fixos, terão um intervalo, pois cada apartamento em um prédio tem suas características.

 

Então eu fiz o seguinte, criei no banco de dados 3 campos, exemplo:

 

BANHEIROS, BANHEIROS_MIN, BANHEIROS_MAX

 

Na hora do cadastro, eu preencho o campo BANHEIROS (se for um imovel fixo), OU eu preencho BANHEIROS_MIN e BANHEIROS_MAX (se for um prédio). Nunca os 3 campos estarão preenchidos ao mesmo tempo!!! Já fiz esse bloqueio no php.

 

Acontece o seguinte, na hora de criar um filtro de busca para o usuário, eu criei 2 campos para ele poder definir um intervalo... exemplo: o usuário quer ver imóveis que contém de 1 a 4 banheiros... Estou quebrando a cabeça aqui pra fazer essa busca. Tentei isso mas ele não está obedecendo da forma correta:

 

SELECT * FROM imoveis WHERE (1 BETWEEN BANHEIROS_MIN AND BANHEIROS_MAX OR 4 BETWEEN BANHEIROS_MIN AND BANHEIROS_MAX AND BANHEIROS >= 1 AND BANHEIROS <= 4)


 

Qual seria a melhor forma de fazer isso para atender as minhas necessidades?

 

Obrigado desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @marcosbruno.mb, irei mover seu tópico para área correta. Não é necessário criar outro, se já criou vou apagá-lo e manter este não se preocupe.

 

Com relação a sua dúvida, seguinte a sintaxe correta do BETWEEN é essa:

 

SELECT colunas FROM tabela WHERE coluna BETWEEN valor1 AND valor2;

No seu caso, acho que você terá que fazer no PHP uma condição com o IF ou SWITCH ou então identificar no próprio select dos dados, se o imóvel é fixo ou não. Para daí, você saber trabalhar com uma das 3 colunas corretas.

 

Ou você pode tentar o seguinte:

 

SELECT colunas FROM tabela WHERE coluna BETWEN valor1 AND valor2 OR coluna2 BETWEEN valor1 AND valor2 OR coluna3 = valor3

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
×

Informação importante

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