Marianne Postado Setembro 11, 2008 Denunciar Share Postado Setembro 11, 2008 (editado) Pessoal, tenho 2 tabelasCategorias==============ID Categoria1 Roupas2 Calçados3 Meias4 Esporte5 Masculinas10 Feminina11 Infantil==============Lojas==============ID Nome CategoriaId1 Zé Maira 1,4,52 Meira Jr 2,3,43 Antonio 1,11,44 Maria 10,3,55 Joaozinho 1,2,3=================Para poder listar somente as lojas que estao dentro da categoria usei assim o SelectPuchando apenas as lojas q tenham a categoria 1Select * from Lojas where CategoriaId Like '%1%'PROBLEMA ..: Ele mostra as lojas de Id = 1,3 e 5 SENDO QUE PEDI APENAS OS QUE TEM A CATEGORIA 1Como fazer para dar um Like e pegar apenas o 1 e não o 11 ou 111 buscando no campo?Obrigado ! Editado Setembro 11, 2008 por Marianne Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Spilki Postado Setembro 11, 2008 Denunciar Share Postado Setembro 11, 2008 Olá, bom dia...tente assim:"Select * from Lojas where CategoriaId = "1""[]'s Rafael Spilki Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marianne Postado Setembro 11, 2008 Autor Denunciar Share Postado Setembro 11, 2008 Amigo, se perceber não tem logica a resposta pois não achará o campo unico, há varios Is sepados por virgulaLeia por favor a pergundaOlá, bom dia...tente assim:"Select * from Lojas where CategoriaId = "1""[]'s Rafael Spilki Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Spilki Postado Setembro 11, 2008 Denunciar Share Postado Setembro 11, 2008 Marianne, entenda... nunca tive interesse de lhe atrapalhar, muito pelo contrário... apenas de ajudar...Perdi meu tempo, postando algo que acredito ser a solução da sua dúvida...mas como interessante sempre é buscar esclarecimento das coisas, vejamos a sua pergunta:Como fazer para dar um Like e pegar apenas o 1 e não o 11 ou 111 buscando no campo?e esta fazendo referência a este select, posto por você:Select * from Lojas where CategoriaId Like '%1%'portanto, visto isto, mantenho a minha resposta...Valhe destacar ainda que você editou seu post depois que postei minha resposta... e é preciso entender ainda que não ganho nada lhe ajudando Marianne, simplesmente ajudo por gostar de ajudar... Sempre leio com atençao as dúvidas de todos e respondo as dúvidas que sei... Certamente você esperava derepente algo pronto, ou mastigado... esse não é o objetivo deste fórum, até onde eu sei...Não gostou da minha resposta? Ora, é um forum aberto com uma equipe super inteligente... se postei algo errado certamente outra pessoa irá me corrigir, na tentativa de lhe ajudar... mas no meu entendimento, o mínimo que se deve fazer para receber alguma ajuda é ser simpático...Se você postasse algo dizendo, acho que me expressei mau, ou telvés não tenha me feito entender, ou talvés ainda, acho que você não entendeu muito bem minha dúvida, pois meu problema é exatamente assim:... certamente ajudaria muito mais do que dar um bump no seu post, criticando quem lhe ajudou...Já ajudei inúmeras pessoas aqui, tenho certeza disso, mas não vou conseguir agradar a todos nunca!Reveja seu posicionamento e a forma como descreveu sua dúvida que eu tento lhe ajudar, mas da forma que esta agora "ultima edição 11/09/08 as 14:17" certamente deixa margens para interpretação, portanto não vou me arriscar a dar algum palpite que possa ser infundado![]'s Rafael Spilki Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jothaz Postado Setembro 11, 2008 Denunciar Share Postado Setembro 11, 2008 Pessoal, tenho 2 tabelasCategorias==============ID Categoria1 Roupas2 Calçados3 Meias4 Esporte5 Masculinas10 Feminina11 Infantil==============Lojas==============ID Nome CategoriaId1 Zé Maira 1,4,52 Meira Jr 2,3,43 Antonio 1,11,44 Maria 10,3,55 Joaozinho 1,2,3=================Qual seria o resultado que você espera utilizando com base os dados acima.Pelo que entedi o ID 1,3 e 5 tem a CategoriaId = 1! É isso?Gerei um exemplo que pode dar um luz:declare @Lojas table (ID int, Nome varchar(50), CategoriaId varchar(50)) insert into @Lojas (ID, Nome,CategoriaId ) values (1,'Zé Maira','1,4,5') insert into @Lojas (ID, Nome,CategoriaId ) values (2,'Meira Jr','2,3,4') insert into @Lojas (ID, Nome,CategoriaId ) values (3,'Antonio','1,11,4') insert into @Lojas (ID, Nome,CategoriaId ) values (4,'Maria','10,3,5') insert into @Lojas (ID, Nome,CategoriaId ) values (5,'Joaozinho','1,2,3') declare @aux table (ID int, Nome varchar(50), CategoriaId varchar(50)) insert into @aux (ID, Nome,CategoriaId ) Select ID, Nome, ',' + CategoriaId + ',' from @Lojas where CategoriaId like ('1%') select * from @aux where charindex(',1,',CategoriaId) > 0Favor responder os questionamentos para continuidade da soulção do post.qualquer duvida é só postar! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marianne Postado Setembro 12, 2008 Autor Denunciar Share Postado Setembro 12, 2008 (editado) Marianne, entenda... nunca tive interesse de lhe atrapalhar, muito pelo contrário... apenas de ajudar...Perdi meu tempo, postando algo que acredito ser a solução da sua dúvida...mas como interessante sempre é buscar esclarecimento das coisas, vejamos a sua pergunta:Como fazer para dar um Like e pegar apenas o 1 e não o 11 ou 111 buscando no campo?e esta fazendo referência a este select, posto por você:Select * from Lojas where CategoriaId Like '%1%'portanto, visto isto, mantenho a minha resposta...Valhe destacar ainda que você editou seu post depois que postei minha resposta... e é preciso entender ainda que não ganho nada lhe ajudando Marianne, simplesmente ajudo por gostar de ajudar... Sempre leio com atençao as dúvidas de todos e respondo as dúvidas que sei... Certamente você esperava derepente algo pronto, ou mastigado... esse não é o objetivo deste fórum, até onde eu sei...Não gostou da minha resposta? Ora, é um forum aberto com uma equipe super inteligente... se postei algo errado certamente outra pessoa irá me corrigir, na tentativa de lhe ajudar... mas no meu entendimento, o mínimo que se deve fazer para receber alguma ajuda é ser simpático...Se você postasse algo dizendo, acho que me expressei mau, ou telvés não tenha me feito entender, ou talvés ainda, acho que você não entendeu muito bem minha dúvida, pois meu problema é exatamente assim:... certamente ajudaria muito mais do que dar um bump no seu post, criticando quem lhe ajudou...Já ajudei inúmeras pessoas aqui, tenho certeza disso, mas não vou conseguir agradar a todos nunca!Reveja seu posicionamento e a forma como descreveu sua dúvida que eu tento lhe ajudar, mas da forma que esta agora "ultima edição 11/09/08 as 14:17" certamente deixa margens para interpretação, portanto não vou me arriscar a dar algum palpite que possa ser infundado![]'s Rafael SpilkiBla Bla Bla.. Vá pentear macaco Galvão Bueno e escrever um livro de poesias e lamentações. A Alteração que fiz foi somente no titulo pra verem que "uma pessoa" postou uma resposta mas não tinha resolvido minha duvidaSó você não entendeu a pergunta Editado Setembro 12, 2008 por Marianne Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marianne Postado Setembro 12, 2008 Autor Denunciar Share Postado Setembro 12, 2008 (editado) Pessoal, tenho 2 tabelasCategorias==============ID Categoria1 Roupas2 Calçados3 Meias4 Esporte5 Masculinas10 Feminina11 Infantil==============Lojas==============ID Nome CategoriaId1 Zé Maira 1,4,52 Meira Jr 2,3,43 Antonio 1,11,44 Maria 10,3,55 Joaozinho 1,2,3=================Qual seria o resultado que você espera utilizando com base os dados acima.Pelo que entedi o ID 1,3 e 5 tem a CategoriaId = 1! É isso?Gerei um exemplo que pode dar um luz:declare @Lojas table (ID int, Nome varchar(50), CategoriaId varchar(50)) insert into @Lojas (ID, Nome,CategoriaId ) values (1,'Zé Maira','1,4,5') insert into @Lojas (ID, Nome,CategoriaId ) values (2,'Meira Jr','2,3,4') insert into @Lojas (ID, Nome,CategoriaId ) values (3,'Antonio','1,11,4') insert into @Lojas (ID, Nome,CategoriaId ) values (4,'Maria','10,3,5') insert into @Lojas (ID, Nome,CategoriaId ) values (5,'Joaozinho','1,2,3') declare @aux table (ID int, Nome varchar(50), CategoriaId varchar(50)) insert into @aux (ID, Nome,CategoriaId ) Select ID, Nome, ',' + CategoriaId + ',' from @Lojas where CategoriaId like ('1%') select * from @aux where charindex(',1,',CategoriaId) > 0Favor responder os questionamentos para continuidade da soulção do post.qualquer duvida é só postar!Oi Amigo, é isso mesmo mas só tive o mesmo problema :(Assim usei no meu Select:ReqCatId = 1Select Id,Nome,CategoriaId ,Endereco ',' + CategoriaId + ',' from Loja where Status = 1 AND CategoriaId like ('"&ReqCatId&"%') order by Nome AscProblema é que na tabela existe um registro que possui a categoria 14 ou 15 ou 16 assim = 8,3,5,14,13Não tem a categoria 1 mas como a categoria 13 começa com 1 ele mostra o registro>Me ajudem por favor :(( Editado Setembro 12, 2008 por Marianne Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Spilki Postado Setembro 12, 2008 Denunciar Share Postado Setembro 12, 2008 (editado) Bla Bla Bla.. Vá pentear macaco Galvão Bueno e escrever um livro de poesias e lamentações. A Alteração que fiz foi somente no titulo pra verem que "uma pessoa" postou uma resposta mas não tinha resolvido minha duvidaSó você não entendeu a perguntaNossa Marianne, como você é educada!Não é só eu que não entendo suas perguntas não é mesmo???http://scriptbrasil.com.br/forum/index.php...=118714&hl= Editado Setembro 12, 2008 por Rafael Spilki Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jothaz Postado Setembro 12, 2008 Denunciar Share Postado Setembro 12, 2008 Fiz este exemplo mais simples:declare @filtro varchar(200) set @filtro = ',1,' declare @Lojas table (ID int, Nome varchar(50), CategoriaId varchar(50)) insert into @Lojas (ID, Nome,CategoriaId ) values (1,'Zé Maira','1,4,5') insert into @Lojas (ID, Nome,CategoriaId ) values (2,'Meira Jr','2,3,4') insert into @Lojas (ID, Nome,CategoriaId ) values (3,'Antonio','1,11,4') insert into @Lojas (ID, Nome,CategoriaId ) values (4,'Maria','10,3,5') insert into @Lojas (ID, Nome,CategoriaId ) values (5,'Joaozinho','1,2,3') insert into @Lojas (ID, Nome,CategoriaId ) values (5,'Valter','11,12,13') select * from @Lojas where charindex(@filtro, ',' + CategoriaId + ',') > 0 --Resultado ID Nome CategoriaId -- ---------- --------- 1 Zé Maira 1,4,5 3 Antonio 1,11,4 5 Joaozinho 1,2,3Marianne acho que a melhor solução seria o uso do charindex ao ives do like. A função charindex pois esta função retorna a posição inicial onde um determinda string se inicia em outra string. No exemplo concateno , ao campo da tabela CategoriaId (,1,11,4,) e ao filtro (,1,) e depois fiz um where onde retorno todos os registro em que o charindex é maior que 0. Ou onde a CategoriaId contenha o filtro.De uma luz ou complicou mai?Rode o scritp de exemplo e veja se esta ok ou o que deve ser alterado.E não se preocupe que resolveremos esta parada. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marianne Postado Setembro 12, 2008 Autor Denunciar Share Postado Setembro 12, 2008 (editado) Fiz este exemplo mais simples:declare @filtro varchar(200) set @filtro = ',1,' declare @Lojas table (ID int, Nome varchar(50), CategoriaId varchar(50)) insert into @Lojas (ID, Nome,CategoriaId ) values (1,'Zé Maira','1,4,5') insert into @Lojas (ID, Nome,CategoriaId ) values (2,'Meira Jr','2,3,4') insert into @Lojas (ID, Nome,CategoriaId ) values (3,'Antonio','1,11,4') insert into @Lojas (ID, Nome,CategoriaId ) values (4,'Maria','10,3,5') insert into @Lojas (ID, Nome,CategoriaId ) values (5,'Joaozinho','1,2,3') insert into @Lojas (ID, Nome,CategoriaId ) values (5,'Valter','11,12,13') select * from @Lojas where charindex(@filtro, ',' + CategoriaId + ',') > 0 --Resultado ID Nome CategoriaId -- ---------- --------- 1 Zé Maira 1,4,5 3 Antonio 1,11,4 5 Joaozinho 1,2,3Marianne acho que a melhor solução seria o uso do charindex ao ives do like. A função charindex pois esta função retorna a posição inicial onde um determinda string se inicia em outra string. No exemplo concateno , ao campo da tabela CategoriaId (,1,11,4,) e ao filtro (,1,) e depois fiz um where onde retorno todos os registro em que o charindex é maior que 0. Ou onde a CategoriaId contenha o filtro.De uma luz ou complicou mai?Rode o scritp de exemplo e veja se esta ok ou o que deve ser alterado.E não se preocupe que resolveremos esta parada.Oi Jotaz, Obrigada pela atenção mesmo, estou enrolada :(Então... estou programando em ASP.. não funciona assim né :(Ai.. qse estou chorando porque busca errado os dados do banco AccessObrigadinha novamente Editado Setembro 12, 2008 por Marianne Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jothaz Postado Setembro 12, 2008 Denunciar Share Postado Setembro 12, 2008 (editado) É sempre um prazer ajudar quem precisa! Me desculpe pelos exemplos no SQL Server não sei porque cismei que estava utilizando SQL Server.Normalmente é complicado suporte remoto pelo desconhecimento do ambiente como um todo.E você têm razão pois as query do SQL nem sempre rodam no Access.Para este problema seu fiz o seguinte teste no access:SELECT [de] AS Expr1 FROM Tabela1 WHERE ((InStr(","+[Tabela1]![de]+"," ,",1,")>0));Substitui o CHARINDEX (do SQL) pelo INSTR (Access) que localiza um determinado caracter em um string.você deve concatenar , (virgulas) antes e depois do filtro ,1, para que o INSTR só retorne o 1, caos não faça isso retorna tab 11,12 e por ai.Deu uma luz?E relaxa que resolveremos esta parada! Editado Setembro 12, 2008 por jothaz Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marianne Postado Setembro 15, 2008 Autor Denunciar Share Postado Setembro 15, 2008 É sempre um prazer ajudar quem precisa! Me desculpe pelos exemplos no SQL Server não sei porque cismei que estava utilizando SQL Server.Normalmente é complicado suporte remoto pelo desconhecimento do ambiente como um todo.E você têm razão pois as query do SQL nem sempre rodam no Access.Para este problema seu fiz o seguinte teste no access:SELECT [de] AS Expr1 FROM Tabela1 WHERE ((InStr(","+[Tabela1]![de]+"," ,",1,")>0));Substitui o CHARINDEX (do SQL) pelo INSTR (Access) que localiza um determinado caracter em um string.você deve concatenar , (virgulas) antes e depois do filtro ,1, para que o INSTR só retorne o 1, caos não faça isso retorna tab 11,12 e por ai.Deu uma luz?E relaxa que resolveremos esta parada!Oi Jotaz ! Obrigada pela antenção.Então realmente funcionou dentro do ACCESS mas colocando no código não encontrei um meio de funcionar sem erro :(Olhá só como estou chamando dentro do Código tentando pegar apenas os que possuem dentro do campo o "1":SELECT CategoriaID AS IdContem FROM Loja WHERE (((InStr(","+CategoriaID +",",",1,"))>0))Dei o nome de IdContem o campo o qual recuperaria os que possuem o 1 no campoErro:Tipo de erro:Microsoft VBScript compilation (0x800A0401)Expected end of statementcategoria.asp, line 31, column 67SqlCategView = "SELECT CategoriaID AS IdContem FROM Loja WHERE (((InStr(","+CategoriaID +",",",1,"))>0))" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marianne Postado Setembro 15, 2008 Autor Denunciar Share Postado Setembro 15, 2008 Jothaz ! resolvi meu problema de Outra forma :DOhando uma dica de outro post mudei meu campo ao invés de separacao por virgura por (1),(2),(5)Assim posso usar o like sem problemas ! :DObrigadinha meu amiguinho ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Marianne
Pessoal, tenho 2 tabelas
Categorias
==============
ID Categoria
1 Roupas
2 Calçados
3 Meias
4 Esporte
5 Masculinas
10 Feminina
11 Infantil
==============
Lojas
==============
ID Nome CategoriaId
1 Zé Maira 1,4,5
2 Meira Jr 2,3,4
3 Antonio 1,11,4
4 Maria 10,3,5
5 Joaozinho 1,2,3
=================
Para poder listar somente as lojas que estao dentro da categoria usei assim o Select
Puchando apenas as lojas q tenham a categoria 1
Select * from Lojas where CategoriaId Like '%1%'
PROBLEMA ..: Ele mostra as lojas de Id = 1,3 e 5 SENDO QUE PEDI APENAS OS QUE TEM A CATEGORIA 1
Como fazer para dar um Like e pegar apenas o 1 e não o 11 ou 111 buscando no campo?
Obrigado !
Editado por MarianneLink para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.