Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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,
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.
/applications/core/interface/imageproxy/imageproxy.php?img=http://i57.tinypic.com/4r6fq9.jpg&key=5e4f904b1c5a630af5eeba59e77de14ede02e906af0f7b08cae8f0d6bf2508a5" alt="4r6fq9.jpg" />
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
tente colocar este tratamentos na WHERE e não na ON do JOIN.