Ir para conteúdo
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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • 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
    • Por 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.
×

Informação importante

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