Jump to content
Marcos_imasters

Categorias Separadas por ,

Recommended Posts

Boa tarde pessoal, primeiro queria deseja cada um de vocês um feliz natal e prospero ano novo.

 

tou com um problema com busca de categorias

 

exemplo da query que estou tentado usar  SELECT * FROM produtos WHERE categoria IN(1) ORDER BY nome ASC

no campo produtos tenho a coluna categoria e ela ta salva assim com os ids da categorias "1,5,18,22,75' so que quando uso essa query ele so ler como se fosse somente o primeiro id

 

exemplo ele so busca as categorias que temnha com  o começo 1 queria fazer que buscasse caso estivesse assim "5,8,1,19,22"

 

alguem tem uma solução?

Share this post


Link to post
Share on other sites

Olá Marcos

 

Acredito que o amigo esteja usando 2 tabelas:

==> 1 tabela para Produto

==> 1 tabela para Categoria

 

Acho que o amigo teria que relacionar as Tabelas e fazer a Busca pela a Chave_Estrangeira. Exemplo de Tabela:

Categoria

- idCategoria

- nomeCategoria

 

Produto

= idProduto

= nomeProduto

+ categoria_idCategoria (chave_estrangeira) vindo da tabela Categoria

 

Espero ter ajudado.

 

Cesar

Share this post


Link to post
Share on other sites
Em 26/12/2018 at 10:39, violin101 disse:

Olá Marcos

 

Acredito que o amigo esteja usando 2 tabelas:

==> 1 tabela para Produto

==> 1 tabela para Categoria

 

Acho que o amigo teria que relacionar as Tabelas e fazer a Busca pela a Chave_Estrangeira. Exemplo de Tabela:

Categoria

- idCategoria

- nomeCategoria

 

Produto

= idProduto

= nomeProduto

+ categoria_idCategoria (chave_estrangeira) vindo da tabela Categoria

 

Espero ter ajudado.

 

Cesar

sim mais essas chaves estragueira fossem mais de um entede? tipo em vez de o produto ser cadastrado em uma categoria seria salvo em varias em array 

Share this post


Link to post
Share on other sites
Em 26/12/2018 at 12:49, Bruno Ferreira da Silva disse:

no IN(), você precisa utilizar as aspas corretamente, ou pode dá problemas, utilize assim


 in(1,2,3,4) 

ou assim


in("1","2","3","4")

, não utilizar assim


 in("1,2,3,4")

 

mesmo resultado so que eu nao estou enviando um array seria somente in ("1") so que so mostra os registro com o comeco com o numero que estou enviando

Share this post


Link to post
Share on other sites

@EdCesar Isso Mesmo Muito Obrigado show! tentei de da reputação mais ta dando esse erro Sorry, there was a problem reacting to this content. mais muito obrigado mesmo tentei de tudo e sua forma funcionou

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Andre Schmidt_130237
      Olá, estou passando por um problema e gostaria de pedir ajuda de vocês. É o seguinte: 
       
      Estou integrando um sistema PHP ao plugin Woocommerce do Wordpress e necessito requisitar alguns produtos do banco de dados, até ai tudo bem. O problema se incia ao buscar o produto na tabela. Ela está assim
      Order id / meta_key / value
      1                     2                  3
      2                     2                  87
      3                     3                  45
       
      Eu preciso selecionar o id 1 que contem o valor 3 desde que o id 2 contenha o valor 87. Como faço isso? Estou completamente perdido
    • By Didyo
      Olá pessoal, não sei se é possível mas minha ideia seria usar o operador IN dentro de um JOIN 
      substituindo o "=".
      Ex: Teria uma tabela itens_cardapio (car_id, car_nome, car_bebidas)
      e outra tabela > bebidas (b_id, b_nome)
      Sei que poderia relaciona n:m tendo uma tabela tipo itens_cardapio_has_bebidas (fk_car_id, fk_b_id) porém queria fazer diferente pois para o que quero isso geraria muitas linhas na tabela de junção.
      Gostaria que o campo car_bebidas na 1ª tabela armazenasse os ids das bebidas da 2ª tabela. Ex. car_bebidas=1,2,5,6,9,11
      e na consulta ficaria algo do tipo:
      SELECT i.* , GROUP_CONCAT(b.b_nome) FROM itens_cardapio i 
      INNER JOIN bebidas b ON (b.b_id IN i.car_bebidas)
      Tentei também algo tipo 
      SELECT i.* , (SELECT b.nome FROM bebidas b WHERE b.b_id IN i.car_bebidas) FROM itens_cardapio i 

      Usei algumas variação com GROUP BY e GROUP_CONCAT,...
      Consegui obter resultados como:
      - a primeira bebida de cada item do cardápio
      - repetir várias vezes cada bebida por item,
      e outros, mas nenhum 100% correto.
      Se no IN usar os números dos ids das bebidas manualmente, ao invés de puxar de um campo, ele busca as bebidas pedidas,
      porém não fica dinâmico, pois é sempre os mesmos números de modo a todos itens do cardápio ficaram com (coca-cola,sprite,fanta) por exemplo.
      Se tiverem alguma ideia agradeço.
    • By Fagner
      Boa tarde,
      Estou literalmetne levando um banho aqui, preciso enviar 3 parametros para uma procedure e retornar 2, estou fazendo da seguinte forma:
      $exec = $Conn->prepare("SET @p_total := ?"); $exec->bind_param('i',$total); $exec->execute(); $exec = $Conn->prepare("SET @p_vlrvenda := ?"); $exec->bind_param('d',$vlrvenda); $exec->execute(); $exec = $Conn->query("CALL addSacola($codcliente,$codproduto,$codconsultora)"); $exec = $Conn->query("SELECT @p_total,@p_vlrvenda"); $row = $exec->fetch_row(); O problema é o retorno que está vindo NULL ja conferi a procedure e o select está retornando o valor correto.
    • By mnmn
      Olá pessoal, poderiam me ajudar?
       
      Tenho as seguintes tabelas:
      CREATE TABLE horariofuncionario ( codigo_horariofuncionario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, codigo_statushorariofuncionario INTEGER UNSIGNED NOT NULL, codigo_funcionario INTEGER UNSIGNED NOT NULL, horario_horariofuncionario VARCHAR(5) NOT NULL, data_horariofuncionario VARCHAR(10) NOT NULL, nomeDiaSemana_horariofuncionario VARCHAR(15) NOT NULL, PRIMARY KEY(codigo_horariofuncionario), FOREIGN KEY(codigo_funcionario) REFERENCES funcionario(codigo_funcionario) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(codigo_statushorariofuncionario) REFERENCES statushorariofuncionario(codigo_statushorariofuncionario) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE statushorariofuncionario ( codigo_statushorariofuncionario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome_statushorariofuncionario VARCHAR(30) NOT NULL, PRIMARY KEY(codigo_statushorariofuncionario) ); CREATE TABLE servicosalao ( codigo_servicosalao INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, codigo_salao INT NOT NULL, codigo_servico INTEGER UNSIGNED NOT NULL, preco_servicosalao VARCHAR(20) NULL, tempo_servicosalao INTEGER UNSIGNED NULL, descricao_servicosalao VARCHAR(200) NULL, PRIMARY KEY(codigo_servicosalao), FOREIGN KEY(codigo_salao) REFERENCES salao(codigo_salao) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(codigo_servico) REFERENCES servico(codigo_servico) ON DELETE NO ACTION ON UPDATE NO ACTION ); Preciso selecionar os HORARIOFUNCIONARIO.horario_horariofuncionario em que o HORARIOFUNCIONARIO.codigo_statushorariofuncionario seja 1 ou 3 e que não contenha nenhum registro na tabela horariofuncionario em que o HORARIOFUNCIONARIO.horario_horariofuncionario esteja entre o HORARIOFUNCIONARIO.horario_horariofuncionario e o HORARIOFUNCIONARIO.horario_horariofuncionario + SERVICOSALAO.tempo_servicosalao e o HORARIOFUNCIONARIO.codigo_statushorariofuncionario seja igual a 2.
       
      Então tenho a query:
      SELECT hf.horario_horariofuncionario FROM horariofuncionario hf WHERE hf.codigo_statushorariofuncionario IN (1,3) HAVING (SELECT COUNT(hf.codigo_horariofuncionario) FROM horariofuncionario hf NATURAL JOIN servicosalao ss WHERE hf.codigo_statushorariofuncionario = 2 AND STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i') BETWEEN STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i') AND SEC_TO_TIME( SUM( TIME_TO_SEC( STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i') ) + TIME_TO_SEC( STR_TO_DATE(ss.tempo_servicosalao,'%H:%i') ) ) ) ) < 1; Está retornando o erro: Invalid use of group function ErrorNr 1111
    • By mnmn
      Olá pessoal, poderiam me ajudar com esse erro?
       
      Tenho o seguinte SELECT no qual preciso selecionar somente os horario_horariofuncionario que estejam em um determinado período de tempo (para isso uso a função BETWEEN) e com o codigo_statushorariofuncionario 1 ou 3, (para isso uso a função IN).
       
      O sub select não pode retornar nenhum resultado, por isso ao final do sub select adicionei = 0.
      SELECT hf.horario_horariofuncionario FROM horariofuncionario hf WHERE hf.codigo_statushorariofuncionario IN (1,3) AND (SELECT COUNT(hf.codigo_statushorariofuncionario) FROM horariofuncionario hf NATURAL JOIN servicosalao ss WHERE STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i') BETWEEN (STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i') AND SEC_TO_TIME( SUM( TIME_TO_SEC( STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i') ) + TIME_TO_SEC( STR_TO_DATE(ss.tempo_servicosalao,'%i') ) ) ) ) AND hf.codigo_statushorariofuncionario = 2) = 0; Contudo essa query está retornando o erro: Invalid use of group function ErrorNr: 1111
       
      Agradeço desde já a ajuda de todos.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.