Jump to content


Photo

Consulta utilizando JOIN ou UNION?


  • Faça o login para participar
2 replies to this topic

#1 bobsap

bobsap

    Normal

  • Usuários
  • 82 posts
  • Sexo:Masculino
  • Localidade:marilia

Posted 11/03/2015, 01:54

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


#2 Danilomaru

Danilomaru

    Ativo

  • Moderadores
  • 300 posts
  • Sexo:Masculino
  • Localidade:brasil

Posted 12/03/2015, 03:52

e 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.



#3 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 12/09/2017, 21:38

Cheap Generic Viagra Online online pharmacy Zithromax Dosage Pneumonia
When Does Amoxicillin Suspension Go Bad
Buy Zithromax Online Overnight Shipping cialis online How To Buy Virga 50mg




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq