Ir para conteúdo

POWERED BY:

Arquivado

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

Charles Macetko

Problema com Filtragem

Recommended Posts

Opa gente, estou com uma situação um pouco complicada.

---

Tenho duas tabelas:

Produtos - Colunas: Codigo | Titulo
ProdutosAtributos - Colunas: CodigoProduto | Nome | Valor

E tenho os seguintes registros

Produtos
Código: 1 | Titulo: Computador X1

ProdutosAtributos
CodigoProduto: 1 | Nome: Memória | Valor: 1 Gb
CodigoProduto: 1 | Nome: Monitor | Valor: 21 Polegadas

---

Preciso buscar os produtos que se enquadrem em mais de um atributo simultaneamente.
Neste caso os Produtos que possuem "Memória: 1 Gb" e "Monitor: 21 Polegadas"

---

Inicialmente testei com:

Select
P.Codigo
From
Produtos P,
ProdutosAtributos PA
Where
PA.CodigoProduto = P.Codigo
And
PA.Nome = "Memória" And PA.Valor = "1 Gb"
And
PA.Nome = "Monitor" And PA.Valor = "21 Polegadas"
Group by
P.Codigo

Porem evidente que com esta query não é gerado resultados, já que existem duas condições de comparação na mesma tabela.

---

Alguém tem alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT P.Codigo FROM Produtos P WHERE
COUNT(
   (SELECT PA.CodigoProduto FROM ProdutosAtributos PA WHERE
       PA.CodigoProduto=P.Codigo AND
       (
             (PA.Nome = "Memória" AND PA.Valor = "1 Gb") OR
             (PA.Nome = "Monitor" AND PA.Valor = "21 Polegadas")
       )
   )
) > 1

maybe?

gambiarra mode[on]

 

o unico problema é se o produto conter 2 memorias de 1 gb ou 2 monitores de 21 polegadas, mas pro resto deve dar certo...

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.