Ir para conteúdo

Arquivado

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

RafiWskY

Inner Join no Sql

Recommended Posts

Boa Noite,

 

Estou com um problema a ser resolvido no código sql abaixo, não sei se existe algum erro de sintaxe no mesmo.

SELECT 
   produtos.id as id, 
   produtos.nome as nome, 
   produtos.descricao as descricao, 
   produtos.tags as tags, 
   produtos.url as url, 
   categorias.url as CategoriaUrl, 
   imagens.arquivo as ImagemArquivo 
FROM produtos 
INNER JOIN prod_amb ON prod_amb.produto_id = produtos.id AND prod_amb.ambiente_id = 23 
INNER JOIN categorias ON categorias.id = produtos.categoria_id 
INNER JOIN prod_carac_op ON prod_carac_op.produto_id = 36 AND prod_carac_op.opcao_id = 18 AND prod_carac_op.opcao_id = 21 
INNER JOIN imagens ON imagens.produto_id = produtos.id AND imagens.principal = 1 
WHERE produtos.situacao = 1 AND produtos.categoria_id = 25 GROUP BY produtos.id

O que eu preciso é trazer o registro do produto quando em prod_carac_op o produto_id for igual a 36 e a opcao_id for igual a 18 e o produto_id for igual a 36 e a opcao_id for igual a 21. Se eu usar somente INNER JOIN prod_carac_op ON prod_carac_op.produto_id = 36 AND prod_carac_op.opcao_id = 18 o sql me retorna o produto.

 

Espero que eu tenha conseguido explicar, rs.

 

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente colocar este tratamentos na WHERE e não na ON do JOIN.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, fiz conforme sugeriu só que ainda assim não retorna os registros que preciso.

 

Segue o sql como ficou:

SELECT 
  produtos.id as id, 
  produtos.nome as nome, 
  produtos.descricao as descricao, 
  produtos.tags as tags, 
  produtos.url as url, 
  categorias.url as CategoriaUrl, 
  imagens.arquivo as ImagemArquivo 
FROM produtos 
  INNER JOIN prod_amb ON prod_amb.produto_id = produtos.id AND prod_amb.ambiente_id = 23   
  INNER JOIN categorias ON categorias.id = produtos.categoria_id 
  INNER JOIN prod_carac_op ON prod_carac_op.produto_id = produtos.id 
  INNER JOIN imagens ON imagens.produto_id = produtos.id AND imagens.principal = 1 
WHERE produtos.situacao = 1 AND produtos.categoria_id = 25 AND prod_carac_op.opcao_id = 18 AND prod_carac_op.opcao_id = 16 GROUP BY produtos.id

Note que eu tenho na tabela prod_carac_op registros onde o produto seja 36 e as opcoes 18 e 16.

 

4r6fq9.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites


SELECT

produtos.id as id,

produtos.nome as nome,

produtos.descricao as descricao,

produtos.tags as tags,

produtos.url as url,

categorias.url as CategoriaUrl,

imagens.arquivo as ImagemArquivo

FROM produtos

INNER JOIN prod_amb ON prod_amb.produto_id = produtos.id

INNER JOIN categorias ON categorias.id = produtos.categoria_id

INNER JOIN prod_carac_op ON prod_carac_op.produto_id = produtos.id

INNER JOIN imagens ON imagens.produto_id = produtos.id

WHERE produtos.situacao = 1

 

AND prod_amb.ambiente_id = 23

AND imagens.principal = 1

 

AND produtos.categoria_id = 25

AND prod_carac_op.opcao_id IN (18,16)

GROUP BY produtos.id

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.