Ir para conteúdo

POWERED BY:

Arquivado

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

Carlos Moreira

[Resolvido] Buscar em 1,3,5,8

Recommended Posts

Ola pessoal!

 

Eu tenho um banco MYSQL com as seguintes tabelas

 

- marca

- produto

 

Na tabela de "produto" eu tenho uma coluna chamada "IdMarca" nesta coluna eu gravo, todas as marcas de respectivo produto separado por "," cujo qual fica desta forma no banco

 

"2,7,9,20"

 

A pergunta é, como faço para fazer uma busca por exemplo em todos os produtos que possuirem o "IdMarca" "9" por exemplo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um SELECT do SQL, pegando apenas o ID e compararndo

 

SQLselect="SELECT campo FROM tabela WHERE IdMarca="&varlogin&""

supondo k o IdMarca esteja setado como numerico no banco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eis a questão não tem como eu colocar como numerico visto que separo por "," os numeros.

 

esta assim:

 

marca

- IdMarca - Integer

- NomeMarca - VarChar(255)

 

produto

- IdProduto - Integer

- IdMarca - Text (Visto que preciso separar por ",")

- NomeProduto - VarChar(255)

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq você esta separando "," os numeros,

dessa forma esta com se fosse valores de um array, você até poderia recuperar e dar um split nele, mas nao terá como saber qual é o 9, mude o bd e coloke um campo adiconal/extra para poder filtar as buscas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estou usando Array tanto para cadastrar quanto para recuperar e Editar os campos.

 

Fiz desta forma por nao ter outra solução, visto que cada produto possui mais de uma marca, você da outra solução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode ao antes de cadastra no bd recuperar o array e dar um SPLIT nele para depois inserir no bd, ficará bem melhor...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o k ele retorna, nau é correto gravar todas as marcas de respectivo produto separado por "," , você poderia ter um relacionamento entre as tabelas e poderia USar o INNER JOIN, você tem k ter um campo na tabela produtos k especifique a marca, e naun ter todas as marcas em um unico campo, a nao ser k o produto possa ter masi de 2 marcas, mas você deve usar o SQL assim

 

SQLselect="SELECT campo FROM tabela WHERE IdMarca="&variavel&""

 

você precisa ter uma relacionamento entre as tabelas, na verdade, a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo , um projeto bem estruturado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade ja tinham me falado para fazer desta forma, porem nao entendi a lógica.

 

hoje esta assim o banco

 

marca

- IdMarca

- NomeMarca

 

produto

- IdProduto

- IdMarca - porem neste campo eu gravo varias marcas separadas por ","

- NomeProduto

 

Como seria o correto?

 

E você me passou esse codigo

SQLselect="SELECT campo FROM tabela WHERE IdMarca="&variavel&""

 

td bem mas na "variavel" como faço para ele entender determinado Id ou seja determinado numero?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você dá o request no form, tipo

variavel=request.form("id"), isso supondo k você terá um formulario com o nomde de id e quando der submit você recupera ele atraves do request.form, e nao é bom você ficar guardando tudo separando por virgula...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim isso eu sei fazer!

 

eu estava fazendo assim

 

marca

- IdMarca

- NomeMarca

 

produto

- IdProduto

- IdMarca (aqui eu gravava somente o id de uma marca) porem o cliente me pediu que precisaria cadastrar mais marcas para cada produto

- NomeProduto

 

Isso que me passou abaixo eu ja fazia, porem o cliente solicitou mais marcas para cada produto, senao teria que cadastrar o mesmo produto mais de 5X, entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom você tem varias masrcas para um produto , você pode recuperar a consulta, k vira com mais de um valor, você dá um SPLIT nele, e faz um laço para fazer a consulta por todos esses valores e exibe ao cliente, k cada produto tem mais de uma marca

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como te disse anteriormente, não sei trabalhar com SPLIT, teria que usar essa metodologia mesmo.

 

entao se eu buscar assim:

SQLselect="SELECT IdMarca FROM produto WHERE IdMarca="&variavel&""

 

ele encontra todos os produtos de marca com Id "2" por exemplo?

mesmo se determinado produto estiver gravado "1,2,4"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele irá buscar todas as ocorrencias onde tiver 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

cria uma nova tabela para os ids das marcas, vai perder um pouco de tempo migrando os dados e alterandos as consultas, updates e inserts mas vai facilitar na logica, vai aumentar sua produtividade, vai exigir bem menos do banco e o IIS vai te agradecer por não ficar pendurando a execução com variaveis, arrays....

Compartilhar este post


Link para o post
Compartilhar em outros sites

aumentar sua produtividade,terá mais gerenciamento, e todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, mas mesmo assim nao entendi a lógica jonathandj, descreve aqui pra mim!

O que teria que fazer nessas condições abaixo? e cadastrar onde aqui?

 

marca

- IdMarca

- NomeMarca

 

produto

- IdProduto

- IdMarca

- NomeProduto

Compartilhar este post


Link para o post
Compartilhar em outros sites

cria uma nova tabela para os ids das marcas,como esta o relacionamento entre as tabelas e depois você USa o INNER JOIN, e naun grave tudo como se fosse um array

Compartilhar este post


Link para o post
Compartilhar em outros sites

seriam 3 tabelas:

 

tb_produto

idproduto number pk

nome varchar

 

tb_marca

idmarca number pk

marca varchar

 

tb_produto_marca

idproduto number fk

idmarca number fk

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.