Ir para conteúdo

POWERED BY:

Arquivado

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

Douglas Rocha

Problema no and

Recommended Posts

Tenho o seguinte select...

 

select * from produto,categoria_produto,tipo,produto_especificacao where produto.categoria_produto=categoria_produto.idcategoria_produto and categoria_produto.tipo=tipo.idtipo and produto.categoria_produto=4 and produto_especificacao.produto=produto.idproduto

and ( produto_especificacao.especificacao=4 and produto_especificacao.especificacao=10 ) group by produto.idproduto order by produto.ordem desc LIMIT 0,1000

 

O único problema na consulta acima é onde esta em negrito, nesse caso preciso de um sql q me retorne produtos com especificação 4 e 10 ao mesmo tempo...

 

Agradeço desde já!

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que o OR no meu problema não é a solução, pq preciso trazer os registros combinados, que tenham especificação A e B ao mesmo tempo, e não registros que tenham especificação A ou B.

 

Obrigado por tentar ajudar! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

... produto_especificacao.especificacao=4 and produto_especificacao.especificacao=10 ...

É impossível ser 4 e 10 ao mesmo tempo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

... produto_especificacao.especificacao=4 and produto_especificacao.especificacao=10 ...

É impossível ser 4 e 10 ao mesmo tempo.

 

 

o SQL simplificado é este...

 

select * from produto,produto_especificacao where

produto_especificacao.produto=produto.idproduto

and ( produto_especificacao.especificacao=4 or produto_especificacao.especificacao=10 )

group by produto.idproduto

 

esta tabela produto_especificacao é uma tabela que tem o código do produto e o código da especificação...

 

CREATE TABLE IF NOT EXISTS `produto_especificacao` (

`idproduto_especificacao` int(10) unsigned NOT NULL AUTO_INCREMENT,

`especificacao` int(10) unsigned NOT NULL,

`produto` int(10) unsigned NOT NULL,

`ordem` int(10) unsigned DEFAULT NULL,

PRIMARY KEY (`idproduto_especificacao`),

KEY `produto_especificacao_FKIndex1` (`produto`),

KEY `produto_especificacao_FKIndex2` (`especificacao`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=208 ;

 

Preciso então trazer os produtos que estejam nesta tabela em união com especificação A e B por exemplo, e não um ou outro .

 

Isso nada mais é q um filtro em que o usuário vai selecionar especificação A e Especificação B, e o sistema vai trazer os produtos com as duas especificaçãoes.

 

resolvi da seguinte maneira...

 

select count(produto_especificacao.idproduto_especificacao),produto.*

from produto,produto_especificacao

where produto_especificacao.produto=produto.idproduto

and ( produto_especificacao.especificacao=4 or produto_especificacao.especificacao=10 )

group by produto.idproduto

having count(produto_especificacao.idproduto_especificacao)=2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui foi usado OR

 

... produto_especificacao.especificacao=4 or produto_especificacao.especificacao=10 ...

Mas se funcionou beleza !

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.