Ir para conteúdo

POWERED BY:

Arquivado

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

Cesão

problemas com ID e LIKE

Recommended Posts

Olá amigos,tenho as seguintes tabelas no meu DB: marcas, categorias e produtos...to fazendo um SELECT com LIKE pra puxa o ID da categoria do produto mostrado...estou fazendo com LIKE pois ha categorias que pertencem a mais de uma marca, entao no campo está 1, 2 ou 2, 3 e talz...o problema eh que quando o id da marca eh 11 (por exemplo) ele puxa as categorias da marca de ID 1 tbm... pois o LIKE faz isso... como faço p ele puxa apenas da 11?????

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas como esta sua query, poste - a para analisarmos melhoruma dica, para estabelecer que uma categoria tem varias marcas utilize uma tabela de relacionamentoex:id_marca | id_categoriauma tabela adicional onde você pode estabelecer o relacionamento !minha opniao ! flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu codigo está assim:

<%id_marca = Request ("idm")id_cat = Request ("idc")id_p = Request ("idp")SQL = "SELECT * FROM categorias WHERE marca LIKE '%"&id_marca&"' ORDER BY categoria"	set rs_cat=conexao.execute(SQL)	If id_cat = "" and id_p = "" ThenSQL = "SELECT * FROM produtos WHERE marca="&id_marca&" ORDER BY id_prod DESC"	set rs_prod=conexao.execute(SQL)ElseIf not id_cat = "" and id_p = "" ThenSQL = "SELECT * FROM produtos WHERE categoria="&id_cat&" and marca="&id_marca&" ORDER BY id_prod DESC"	set rs_prod=conexao.execute(SQL)ElseIf id_cat = "" ThenSQL = "SELECT * FROM produtos WHERE id_prod="&id_p	set rs_prod=conexao.execute(SQL)End If	SQL = "SELECT * FROM marcas WHERE id_marca="&id_marca	set rs_marca=conexao.execute(SQL)%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

seu problema esta nesta sql neh?SQL = "SELECT * FROM categorias WHERE marca LIKE '%"&id_marca&"' ORDER BY categoria"neste request você retorna assim neh ?1,2,3entaum coloque sem o %.flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesmo assim ele continua relacionando em alguns casos...tipo, quando clico em algum produto de marca 3, ele acha algumas categorias da marca 13...

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas oq vem nesta variavel id_marca ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua SQL está fazendo exatamente o que está pedindo: Selecionar algo da tabela tal onde no campo tal contenha qualquercaractere+MEUNUMERO+qualquercaractere; repare que 13 CONTÉM o caractere 3, você deve usar o "=" ou o "IN" caso passe valores de ids separados por ",".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, o Salgado disse tudo.

Só foi complementar e dar um exemplo para que entenda melhor:

 

Troque esta instrução Sql

Sql = "Select * Fom Categorias Where Marca Like '%"&id_marca&"' Order by  categoria"

Por essa...

 

Sql = "Select * Fom Categorias Where Marca In ("&id_marca&") Order by Categoria"

Bom, espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu usei a SQL que você me mandou... mas nao deu mto certo...

minha SQL está assim:

 

SQL = "SELECT * FROM categorias WHERE marca In ("&id_marca&") ORDER BY categoria"	set rs_cat=conexao.execute(SQL)

E está dando o seguinte erro:

Tipo de dados imcompatível na expressão de critério.

Compartilhar este post


Link para o post
Compartilhar em outros sites

up again!! alguem pode me ajudar??

Compartilhar este post


Link para o post
Compartilhar em outros sites

deve ser apenas erro de tipo agorase for texto poe aspas simples antes e depois de cada valor se não for tira as aspas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora eu deixei assim:

SQL = "SELECT * FROM categorias WHERE marca IN ('"&id_marca&"') ORDER BY categoria"	set rs_cat=conexao.execute(SQL)

Mas agora ele soh puxa as categorias que estão sozinhas no campo... tipo, quando tem mais de uma (1, 2, 10) ele nao puxa....

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas é isso que o IN faz mesmo tiozinho1,2,10 é uma coisa 1 é outra. 2 é outra e 10 é outrao IN pega todos os registros que tenham um dos valores separados por virgula e não todos assimacho que o que voce queria era usar o like mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que eu queria eh o seguinte... existe uma pagina de produtos...

onde cada produto tem sua marca e categoria... quando peço para mostrar os produtos de uma marca, ele aparece um menu onde vao estar relacionados todas as categorias daquela marca.. e abaixo de cada categoria, seus respectivos produtos... o problema é:

 

existem algumas categorias que existem para mais de 1 marca... tipo, a categoria de mochilas existe para a marca Fly e para a marca Dirt... por isso no meu banco, quando vou colocar o ID da marca na tabela de categorias, eu coloco 1, 2 (que sao os IDs dessas suas marcas)...

 

O que quero fazer eh o seguinte: quando eu clicar na marca Dirt, eu quero que apareça todas as categorias relacionadas a essa marca, inclusive a Mochilas... e nao estou conseguindo fazer isso...

 

meu código está assim:

 

SQL = "SELECT * FROM categorias WHERE marca IN ('"&id_marca&"') ORDER BY categoria"	set rs_cat=conexao.execute(SQL)

Jah tentei usar o LIKE, mas quando eu clicava em Dirt (por exemplo) acabava aparecendo categorias de outras marcas... tipo... dirt eh ID 11 (por exemplo)... dai ele aparecia categoria da marca de ID 1 (jah que a marca de ID 11, possui o numero 1 compondo o numero 11.. deu p entender?) e vice-versa....

quando a marca era ID 3, aparece categorias da marca 13... e assim acontece com todos os casos (quando uso LIKE)...

 

Quando uso IN, ele apenas nao aparece as categorias que tem relação... Mochilas (por exeplo) que está relacionado em mais de 1 marca, nao aparece...

 

Como faço para ele aparecer apenas as categorias correspondentes aquela marca, mesmo tendo relacionado mais de 1 marca para a mesma categoria? (2, 4 - na coluna da tabela do DB)

Compartilhar este post


Link para o post
Compartilhar em outros sites

como voce guarda esta informações no DB??e como voce quer que apareça na tela??

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu adiciono manualmente no DB...mas eh assim: vou colocar tabelas e campos abaixo...MARCAS- id_marca (autonumeração)- nome (texto)- logo (texto)CATEGORIAS- id_cat (autonumeração)- marca (texto) *- categoria (texto)PRODUTOS- id_prod (autonumeração)- produto (texto)- marca (Número)- categoria (Número)* Esse campo é onde ficam os numeros correspondentes as marcas... entao quando tem mais de 1 marca, fica tipo assim: 3, 4 ou 5, 10entendeu??Dai eu gostaria que aparecesse assim.... quando eu clicasse no nome de uma marca, vai abrir uma pagina com um menu assim: CATEGORIAprodutoprodutoprodutoCATEGORIAprodutoprodutoprodutoprodutoou seja, eu quero que apareça todas as categorias relacionadas a marca que eu cliquei... e abaixo todos os produtos de cada categoria... o problema eh o que eu disse acima... eu jah fiz isso, mas contem os erros que eu disse... quando clico na marca "1" por exemplo, ele mostra produtos da marca "1, 10, 11, 12, 13, 14, 15, 16, 17, 18 e 19"... pois em todos esses contem o numero "1".. e isso acontece com todos eles.... (se eu clico no 2, aparece do 2, do 12 e do 20 tbm)... e assim vai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguem pode me ajudar?? é meio urgente.. preciso disso pra 2 serviços aki e faz 3 semanas que to tentandoe nao consigo de jeito nenhum....

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.