Re: [pgbr-geral] Consultas com AND entre relação N x N
Funcionou perfeitamente Danilo, muito obrigado! *Kauan Mocelin* kauanmoce...@gmail.com Em 15 de julho de 2017 01:03, Danilo Silvaescreveu: > Em 14 de julho de 2017 16:40, Kauan Mocelin > escreveu: > >> Boa tarde, estou com um problema no postgresql que não consigo resolver, >> tenho a seguinte relação n x n: >> >> *tb_aditivo* >> cod_aditivo >> >> *tb_aditivo_motivo_aditivo* >> cod_aditivo_motivo_aditivo >> cod_aditivo >> cod_motivo_aditivo >> >> *tb_motivo_aditivo* >> cod_motivo_aditivo >> >> >> Na minha pesquisa informo 3 cod_motivo_aditivo = (2,4,8), preciso >> retornar o cod_aditivo referente a EXATAMENTE estes 3 motivos. >> >> Não testei, mas tente assim: > > SELECT cod_aditivo FROM ( > SELECT > tb_aditivo_motivo_aditivo.cod_aditivo, > string_agg(tb_aditivo_motivo_aditivo.cod_motivo_aditivo::text,',' ORDER > BY tb_aditivo_motivo_aditivo.cod_motivo_aditivo) AS cod_motivo_aditivo > FROM tb_aditivo_motivo_aditivo WHERE > (tb_aditivo_motivo_aditivo.cod_motivo_aditivo > IN (2,4,8)) > GROUP BY tb_aditivo_motivo_aditivo.cod_aditivo > ) AS aditivos > WHERE (cod_motivo_aditivo = '2,4,8') > > > []s > Danilo > > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consultas com AND entre relação N x N
Em 14 de julho de 2017 16:40, Kauan Mocelinescreveu: > Boa tarde, estou com um problema no postgresql que não consigo resolver, > tenho a seguinte relação n x n: > > *tb_aditivo* > cod_aditivo > > *tb_aditivo_motivo_aditivo* > cod_aditivo_motivo_aditivo > cod_aditivo > cod_motivo_aditivo > > *tb_motivo_aditivo* > cod_motivo_aditivo > > > Na minha pesquisa informo 3 cod_motivo_aditivo = (2,4,8), preciso retornar > o cod_aditivo referente a EXATAMENTE estes 3 motivos. > > Não testei, mas tente assim: SELECT cod_aditivo FROM ( SELECT tb_aditivo_motivo_aditivo.cod_aditivo, string_agg(tb_aditivo_motivo_aditivo.cod_motivo_aditivo::text,',' ORDER BY tb_aditivo_motivo_aditivo.cod_motivo_aditivo) AS cod_motivo_aditivo FROM tb_aditivo_motivo_aditivo WHERE (tb_aditivo_motivo_aditivo.cod_motivo_aditivo IN (2,4,8)) GROUP BY tb_aditivo_motivo_aditivo.cod_aditivo ) AS aditivos WHERE (cod_motivo_aditivo = '2,4,8') []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consultas com AND entre relação N x N
Em 14/07/2017, Kauan Mocelinescreveu: > Boa tarde, estou com um problema no postgresql que não consigo resolver, > tenho a seguinte relação n x n: > > *tb_aditivo* > cod_aditivo > > *tb_aditivo_motivo_aditivo* > cod_aditivo_motivo_aditivo > cod_aditivo > cod_motivo_aditivo > > *tb_motivo_aditivo* > cod_motivo_aditivo > > > Na minha pesquisa informo 3 cod_motivo_aditivo = (2,4,8), preciso retornar > o cod_aditivo referente a EXATAMENTE estes 3 motivos. > > Tentei fazer de várias formas com o IN, mas não da certo pois um aditivo > pode ter os motivos 1,4,8, neste caso como o IN funciona com OR não vai > trazer exatamente os caras que eu preciso. > Tente: SELECT cod_aditivo FROM tb_aditivo_motivo_aditivo WHERE EXISTS (SELECT * FROM tb_aditivo_motivo_aditivo WHERE cod_motivo_aditivo = 2) AND EXISTS (SELECT * FROM tb_aditivo_motivo_aditivo WHERE cod_motivo_aditivo = 4) AND EXISTS (SELECT * FROM tb_aditivo_motivo_aditivo WHERE cod_motivo_aditivo = 8); Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral