Ir para conteúdo

POWERED BY:

Arquivado

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

webfuture

Como fazer este select

Recommended Posts

Olá galera, estou com um problemão aqui, é o seguinte, tenho uma tabela onde o usuario coloca todos os dados dele (idade, cidade, estado, sexo, tipofisico, etc..) como também os dados da pessoa que ele procura (sexo, tipofisico, estatura, religiao, etc...), tenho duas páginas (procuropor e loucosporvoce), na página procuropor pego todos os cadastros que tem o perfil que eu procuro, ou seja que batam com os dados informados no meu cadastro, agora na página loucosporvoce tenho que trazer os cadastros que escolheram pessoas com meu perfil, porém o que acontece, a idade do cadastro do usuário esta armazenada como 1980/07/24 por exemplo, tem também um campo idade que armazena somente a idade como 24, 18 etc, na idade que a pessoa procura como são no formato 18-25, 25-30, 30-35, armazeno como 1 ou 2 ou 3 e assim por diante, ai que não estou conseguindo fazer o select adequado da idade, o resto esta ok, vejam o script:

 

Pego os dados do usuário logado:

 

SQL = "select sexo, altura, estatura, fisico, etnia, atencao, religiao, estadocivil, signo, lugares, hobbies, gostomusical from tb_cadastros where id_cadastro = "& Session("id_logado") &" "Set RSMeusDados = Conexao.Execute(SQL)If (Not RSMeusDados.EOf) thensexo = RSMeusdados.Fields("sexo")altura = RSMeusdados.Fields("altura")estatura = RSMeusdados.Fields("estatura")fisico = RSMeusdados.Fields("fisico")etnia = RSMeusdados.Fields("etnia")atencao = RSMeusdados.Fields("atencao")religiao = RSMeusdados.Fields("religiao")estadocivil = RSMeusdados.Fields("estadocivil")signo = RSMeusdados.Fields("signo")lugares = RSMeusdados.Fields("lugares")hobbies = RSMeusdados.Fields("hobbies")gostomusical = RSMeusdados.Fields("gostomusical")End IfRSMeusDados.CloseSet RsMeusDados = NothingFaço o select por perfis que me procuram:SQL = "Select count(*) as total from tb_cadastros where ativo = 'S' and id_cadastro <> "& Session("id_logado") &" and "if sexo <> "" thenSQL = SQL & " sexo_procura like '%" & sexo & "%' and "passouBusca = trueend ifif altura <> "" thenSQL = SQL & " altura_procura like '%" & altura & "%' and "passouBusca = trueend ifif estatura <> "" thenSQL = SQL & " formafisica like '%" & estatura & "%' and "passouBusca = trueend ifif fisico <> "" thenSQL = SQL & " aspectofisico like '%" & fisico & "%' and "passouBusca = trueend ifif etnia <> "" thenSQL = SQL & " origemetnica like '%" & etnia & "%' and "passouBusca = trueend ifif atencao <> "" thenSQL = SQL & " partedocorpo like '%" & atencao & "%' and "passouBusca = trueend ifif religiao <> "" thenSQL = SQL & " religiao_procura like '%" & religiao & "%' and "passouBusca = trueend ifif estadocivil <> "" thenSQL = SQL & " estadocivil_procura like '%" & estadocivil & "%' and "passouBusca = trueend ifif signo <> "" thenSQL = SQL & " signo_procura like '%" & signo & "%' and "passouBusca = trueend ifif lugares <> "" thenSQL = SQL & " lugares_procura like '%" & lugares & "%' and "passouBusca = trueend ifif hobbies <> "" thenSQL = SQL & " hobbie_procura like '%" & hobbies & "%' and "passouBusca = trueend ifif gostomusical <> "" thenSQL = SQL & " gostomusical like '%" & gostomusical & "%' and "passouBusca = trueend ifif passouBusca then SQL = left(SQL,len(sql) - 4)set rs = Conexao.execute(sql)
Teria que ter um if para a idade mas não to conseguindo bolar uma forma de fazer isto, tendo em vista que o campo idade dos dados da pessoa procurada é 1 ou 2 ou 3 ou 4 ou 5 e assim por diante.

 

Alguém sabe como fazer isto ?

 

Xavier

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai precisar criar uma tabela de Grupos de Idade que vai basicamente ter uma coluna pra armazenar a idade, e outra pra armazenar o grupo, tipo:Idade Grupo18 119 120 121 222 223 2etc.Depois, no select que você faz a busca, você pesquisa por todos os registros que são do mesmo grupo da idade pesquisada.Algo assim: ......" WHERE idade IN (SELECT idade FROM GruposIdade WHERE grupo = "& grupo &")Seguindo essa idéia você vai conseguir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cassiano, entendi em partes, neste banco de dados que estaria criando teria as idades com seu determinado grupo, e no meu select se eu adicionar um If que faz o que você colocou dentro do (Select...) funcionaria? Ou seja, ele pegaria todos os registros onde a idade_procura que tem os valores como 1 por exemplo e traria os registros ?

 

SQL = SQL & " idade_procura IN (SELECT idade FROM tb_grupos WHERE grupo = '1' ) and "passouBusca = true

Desculpe a pergunta

 

Xavier

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso aí!Basta que você recupere antes de executar o select, o grupo de idade desejado, e utilize esse grupo no select, como você fez no seu exemplo com o grupo 1.Faz uns testes aí.. e qualquer coisa posta!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá CassianoVix, cara desculpa te perguntar, para isto funcionar bastaria eu fazer como você postou:SQL = SQL & " idade_procura IN (SELECT idade FROM tb_grupos WHERE grupo = '1' ) and "Tipo, dentro de um select outro select dentro de () ? Ou teria que fazer um select antes de fazer o SQL = SQL para pegar o grupo de idade, tipo fazer o SQl = SQL dentro de um loop ?Porque colocando apenas o que mencionei acima, não rolou...Xavier

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá CassianoVix, acho que consegui fazer de uma outra forma, não sei se a mais correta e certa, antes do SQL fiz um If:

 

If minha_idade >= 18 and minha_idade <= 21 thenmeu_grupo = "1"elseif minha_idade >= 21 and minha_idade <= 25 thenmeu_grupo = "2"elseif minha_idade >= 25 and minha_idade <= 30 thenmeu_grupo = "3"elseif minha_idade >= 31 and minha_idade <= 35 thenmeu_grupo = "4"	elseif minha_idade >= 36 and minha_idade <= 40 thenmeu_grupo = "5"elseif minha_idade >= 41 and minha_idade <= 45 thenmeu_grupo = "6"elseif minha_idade >= 46 and minha_idade <= 50 thenmeu_grupo = "7"	elseif minha_idade >= 50 and minha_idade <= 60 thenmeu_grupo = "8"elseif minha_idade >= 60 and minha_idade <= 70 thenmeu_grupo = "9"elseif minha_idade >= 70 and minha_idade <= 80 thenmeu_grupo = "10"End Ifif meu_grupo <> "" thenSQL = SQL & " idade_procura = "& meu_grupo &" and "passouBusca = trueEnd If

Xavier

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá CassianoVix, acho que consegui fazer de uma outra forma, não sei se a mais correta e certa, antes do SQL fiz um If:

If minha_idade >= 18 and minha_idade <= 21 thenmeu_grupo = "1"elseif minha_idade >= 21 and minha_idade <= 25 thenmeu_grupo = "2"elseif minha_idade >= 25 and minha_idade <= 30 thenmeu_grupo = "3"elseif minha_idade >= 31 and minha_idade <= 35 thenmeu_grupo = "4"	elseif minha_idade >= 36 and minha_idade <= 40 thenmeu_grupo = "5"elseif minha_idade >= 41 and minha_idade <= 45 thenmeu_grupo = "6"elseif minha_idade >= 46 and minha_idade <= 50 thenmeu_grupo = "7"	elseif minha_idade >= 50 and minha_idade <= 60 thenmeu_grupo = "8"elseif minha_idade >= 60 and minha_idade <= 70 thenmeu_grupo = "9"elseif minha_idade >= 70 and minha_idade <= 80 thenmeu_grupo = "10"End Ifif meu_grupo <> "" thenSQL = SQL & " idade_procura = "& meu_grupo &" and "passouBusca = trueEnd If
Xavier
Vai funcionar, mas ao invés dos IF´s, você pode fazer um select pra buscar o grupo correspondente à "minha_idade", ou até mesmo um CASE, que fica mais elegante do que esse monte de IF e economiza uma ida ao banco de dados.AbraçoCassiano.

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.