RafiWskY 2 Denunciar post Postado Abril 16, 2015 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
Motta 645 Denunciar post Postado Abril 16, 2015 tente colocar este tratamentos na WHERE e não na ON do JOIN. Compartilhar este post Link para o post Compartilhar em outros sites
RafiWskY 2 Denunciar post Postado Abril 16, 2015 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. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 16, 2015 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