Ir para conteúdo

Arquivado

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

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?

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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 

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ronimarcos.silva
      Como faço para usar o Case com o "In", por exemplo no caso abaixo?
      (case gope.cd_grp_operat when 1 then 1 when 3 then 1 when 15 then 1 when 25 then 1 when 35 then 1 when 45 then 1 when 55 then 1 else 99 end ) ib_controla_km, -- Eu posso fazer asism? (case gope.cd_grp_operat when in (1, 3, 15, 25, 35, 45, 55) else 99 end ) ib_controla_km, Ou assim, aninhando o (1, 3, 45) dentro de um "IN": 
       
      (case gope.cd_grp_operat when gope.cd_grp_operat = 1 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) when 2 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) when 45 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) )else 0 end)f_km_inicial,  
    • Por 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
    • Por 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.
    • Por 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.
    • Por 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
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.