Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Eu estou com uma dúvida em uma consulta que preciso fazer, ela funciona desta forma:
Eu tenho um tabela de imóveis que tem um campo que recebe IDS de vários bairros da tabela bairro, ex:
Tabela > Campo > Valores
imoveis > bairro > (2,5,8,6,1,7,12,15)
e preciso fazer uma consulta que passa um array de bairros, ex:
SELECT * FROM imoveis WHERE bairro in (5,6,12);
Mas esta consulta não me retorna nenhum valor, esta é a forma correta de fazer esta consulta? ou existe uma outra forma que retorna o valores que eu preciso?
Desde já agradeço.
[]s
Bom trabalho.
>
a consulta esta correta, sugiro que você de um echo no seu SQL pra ver realmente o que o sistema esta processando.
Olá giesta, então, eu nem implementei o código ainda, eu fiz essa consulta na mão mesmo, e para esta consulta eram para retornar estes três registros:
select id from imoveis where bairro in(5,6,12);
/*
id bairro
12 2,5,8,6,1,7,12,15
19 20,22,5,12,9,6,8,4
20 19,5,6,4,8,12,13
*/
Um detalhe que eu percebi é que quando eu informo um dos primeiros números do campo bairro(2, 20, 19) ele retorna o regitros, mas se faço como está no exemplo da consulta ele não retorna nada, ex:
Se eu fizer assim:
select id from imoveis where bairro in(2,6,12);
Ele vai me retornar o seguinte registro:
/*
id bairro
12 2,5,8,6,1,7,12,15
*/
Mas só porque ele começa com o id 2 que é o mesmo que inicia na minha consulta, fora isso ele não trás nada.
Agradeço pela ajuda.
[]s
Pelo que entendi, você na verdade quer usar é FIND_IN_SET().
Veja: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set
a consulta esta correta, sugiro que você de um echo no seu SQL pra ver realmente o que o sistema esta processando.