Ir para conteúdo

POWERED BY:

Arquivado

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

michelmfreitas

Consulta utilizando JOIN ou UNION?

Recommended Posts

Olá pessoal, estou com uma dúvida:

 

Tenho três tabelas relacionadas:

 

Produto: id - titulo

Tags: id - nome

TagsProdutos: id - tag_id - produto_id

 

Tenho que buscar um número dinâmico de tags nos produtos relacionados e que meu banco me retorne os produtos que possuem as tags combinadas. Exemplo:

 

Produto 1: mamãe - infantil - aniversários

Produto 2: mamãe - adulto - festas

Produto 3: mamãe - infantil - outros

 

Se buscar pelas tags 'mamãe' e 'infantil', ele me retorne os produtos 1 e 3. Atualmente tenho uma consulta que está me retornando o produto 2 também, pois ele tem 'mamãe' como tag.

 

Podem me ajudar? Minha consulta atual:

SELECT Produto.* FROM tags_produtos AS TagsProduto LEFT JOIN produtos AS Produto ON (Produto.id = TagsProduto.produto_id)  WHERE Produto.publicado = 1 AND Produto.titulo LIKE '%%' OR ((TagsProduto.tag_id = 730)  AND  (TagsProduto.tag_id = 731)  AND  (TagsProduto.tag_id = 735))  GROUP BY Produto.id  ORDER BY Produto.id ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se buscar pelas tags 'mamãe' e 'infantil', ele me retorne os produtos 1 e 3. Atualmente tenho uma consulta que está me retornando o produto 2 também, pois ele tem 'mamãe' como tag.

 

Ai depende do objetivo da aplicação/consulta. dependendo do ponto de vista trazer a linha 2 tmb nao esta errado....

 

Mas pra trazer só a linha 1 e 3 teriamos

sendo mamae = 1

infantil = 2

adulto = 3

festa = 4

aniversario = 5

outros = 6

 

select Id_produto from tag_produtos where tag_id in (1,2) group by id_produto having count(*) = 2

 

 

having count(*) = 2 pq 2 é a quantidade de tags que ele tem que atender especificamente.

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.