Jump to content
rainbowily

Ajuda com consulta

Recommended Posts

Sou nova em sql e estou com duvida em como fazer uma consulta:

Eu tenho uma tabela de produto(id, descricao), cor(id, nome) e produto_cor(id, id_produto, id_cor). Preciso descobrir se tem algum produto que tenhas as cores (1,2,3) respectivamente para não deixar cadastrar outro produto. Alguém poderia me ajudar? Obrigada

Screenshot_2.png

Screenshot_3.png

Screenshot_4.png

Share this post


Link to post
Share on other sites

uma forma


 

select id_produto
from   produto_cor
where id_cor in (1,2,3)
having count(distinct id_cor) = 3

para detalhes pesquise na documentação do BD sobre GROUP BY , HAVING e DISTINCT

Share this post


Link to post
Share on other sites
13 horas atrás, Motta disse:

uma forma


 


select id_produto
from   produto_cor
where id_cor in (1,2,3)
having count(distinct id_cor) = 3

para detalhes pesquise na documentação do BD sobre GROUP BY , HAVING e DISTINCT

O único problema é que mesmo o registro tendo as 3 cores, se ele tive 1 ou 2 a mais ainda vai listar como resultado. Por exemplo o produto 1 usa as cores 1,2,3, se eu for cadastrar outro produto quero não permita usar as cores 1,2,3 juntas novamente

Share this post


Link to post
Share on other sites

Consegui resolver

SELECT TRUE
FROM produto p
INNER JOIN produto_cor pc
	ON pc.id_produto = p.id
WHERE EXISTS(
	SELECT 
		TRUE
	FROM produto_cor pci 
	WHERE pci.pro_grupo_cor_id = p.id 
		AND pci.id_cor IN (1,2,3)
	GROUP BY
		pci.id_produto
	HAVING COUNT(1) = 2
)
GROUP BY
		p.id
	HAVING COUNT(1) = 2

Obrigada pela ajuda

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 fabioamorais
      Ola pessoal, sou novo aqui no fórum e também no mundo da programação. 

      Estou criando um sistema de cadastro de clientes em PHP 7 e mysql
      para meu serviço para fins de organização, tenho ja pronto o sistema de cadastro e edição do cliente, tenho login por usuário e senha.
      preciso colocar nesse sistema uma forma que registre a ação e o usuário que fez a ação quando houver uma alteração no cadastro.
      exemplo;
      O usuario (jose) alterou o status de analise para concluído .
      o usuario (pedro) alterou a localização de mesa para armario.
      e que fosse exibido como um tipo de histórico de eventos no próprio cadastro do cliente.
      e nesse campo se ainda tiver como add cometários.
      Usuario (jose): Precisa entrar em contato com o cliente francisco. 
      Usuario (pedro): cliente foi avisado e está sabendo.
       
      quem souber uma forma de fazer isso, ficaria muito grato.

    • By proflupin
      Estou com a seguinte dificuldade, possuo um <a> que busca uma id numa tabela do banco de dados, conforme abaixo:
       
      <a href="self_service.php?id=<?php echo $row_produto['id_categoria_chamado']?>" class="btn btn-primary"data-toggle="collapse" data-target="#subcategoria" aria-expanded="false" aria-controls="collapseExample">Visitar</a> A consulta é realizada, pois vejo que um novo link é mostrado no rodapé da página:

       
      Esta página self_service.php mostrada acima, é minha página principal, onde tudo é trabalhado. Se por exemplo eu mudar para outro arquivo php, teste.php por exemplo, uma nova página é aberta e consigo exibir os resultados normalmente.
       
      O problema é: quero abrir este ID na mesma página, dentro de um collapse. Exemplo:
       
      Cliquei em visitar na categoria Totvs...
       
       
      Um collapse abre-se logo abaixo:

       
      O que não consigo fazer é resgatar o ID passado pelo botão VISITAR em meu collapse, se eu tenter o $_GET['id'], não vai retornar nenhum valor, pois a URL não muda quando trabalhamos com collapse.
    • By DinhoPHP
      Olá!
      Alguém pode me dar uma luz sobre fazer um ORDER BY, hora ASC ou hora DESC? Por favor! Estou utilizando PHP e JS no projeto.
       
      $pegadados = $pdo->prepare("SELECT * FROM produtos WHERE categoria LIKE '%$dataSearch%' OR marca LIKE '%$dataSearch%' OR produto LIKE '%$dataSearch%' OR modelo LIKE '%$dataSearch%' OR descricao LIKE '%$dataSearch%' ORDER BY $filter $filter2");
    • By Murilo Corrêa
      Bom dia Senhores, 
       
      Estou com um dificuldade, onde precisava que minha consulta trouxesse apenas a menor data para cada produto. 
       
      Faço o cruzamento entre 3 tabelas. Segue 2 Selects que tentei, porém está trazendo todas as datas (termino_digitacao) de cada item.
       
      Tentativa 1: 
       
      select concat(prd.cod_produto, prd.digito) as Cod_Delage, prd.descricao as Descricao, p.termino_digitacao as Entrada, p.cod_pedido as Pedido from pedido p (NOLOCK) inner join pedido_item pedi (NOLOCK) on p.cod_pedido= pedi.cod_pedido inner join produto prd (NOLOCK) on pedi.cod_produto= prd.cod_produto where p.operacao=2 and p.termino_digitacao=(select Min(pe.termino_digitacao) FROM pedido pe WHERE pe.cod_pedido=p.cod_pedido GROUP BY cod_pedido) GROUP by prd.cod_produto,prd.digito, prd.descricao, p.termino_digitacao, p.cod_pedido ORDER BY Cod_Delage  
      Tentativa 2: 
       
      select concat(prd.cod_produto, prd.digito) as Cod_Delage, prd.descricao as Descricao, p.termino_digitacao as Entrada, p.cod_pedido as Pedido from (select cod_pedido, MIN(termino_digitacao) as entrada from pedido (NOLOCK) group by cod_pedido) pe inner join pedido p (NOLOCK) on pe.cod_pedido= p.cod_pedido and pe.cod_pedido=p.cod_pedido and pe.entrada= p.termino_digitacao inner join pedido_item pedi (NOLOCK) on p.cod_pedido= pedi.cod_pedido inner join produto prd (NOLOCK) on pedi.cod_produto= prd.cod_produto where p.operacao=2 GROUP by prd.cod_produto,prd.digito, prd.descricao, p.termino_digitacao, p.cod_pedido ORDER BY p.termino_digitacao asc
       
       
      OBS: Ambas estão trazendo as mesmas informações kkk. 
    • By gabyin
      estou fazendo uma lista de exercícios para a escola, mas não consigo resolver esse erro, alguém pode me ajudar?
       

×

Important Information

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