Hum, obrigado pela resposta Matheus... Quanto o uso do case, neste select estou trabalhando com 2 tabelas por isso o Union A tag (C ou P) é para saber de onde é o registro (C-Cliente ou P-Parceiro) Situacao e Ativo é o status do registro na tabela
Marcelo Silva ----------------------------------- From: Matheus de Oliveira Sent: Monday, September 17, 2012 9:46 AM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Duvida no Retorno de um SQL 2012/9/17 Marcelo Silva <[email protected]> Senhores tenho o seguinte SELECT select z.* from( select cod_id, nome, fantasia, 'C' as tipo, cod_gru from mv_clientes (A) where (ativo not in('C')) union all select cod_id, nome, fantasia, 'P' as tipo, cod_gru from mv_parceiros (B) where (situacao not in('C')) ) as z where (z.cod_gru = :cod_gru) order by z.fantasia Pergunta: O Motor do Postgres Traz todos os registros das tabelas A e B e depois filtra na tabela resultante Z ? Ou ele consegue trazer somente os registros já de acordo com a condição Z ? Ou seria melhor eu já colocar os filtros nas tabela A e B ? Não é garantido que funciona SEMPRE, mas quando possível o otimizador tenta "quebrar" a sub-consulta fazendo com que fique uma consulta só, mas se não der ele vai criar uma tabela temporário, digamos Z, e depois filtrar da mesma. Use o EXPLAIN, é um bom indício pra saber como está se comportando nesse caso. De qualquer forma em casos assim, eu prefiro usar o CASE, pra mim parece mais simples: select cod_id, nome, fantasia, CASE WHEN ativo <> 'C' THEN 'C' ELSE 'P' END as tipo, cod_gru from mv_clientes where (situacao not in('C') OR ativo not in('C')) AND cod_gru = :cod_gru Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados PostgreSQL Dextra Sistemas - MPS.Br nível F! www.dextra.com.br -------------------------------------------------------------------------------- _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
