________________________________
> From: marc...@ig.com.br 
> To: pgbr-geral@listas.postgresql.org.br 
> Date: Thu, 13 Oct 2011 11:07:23 -0300 
> Subject: [pgbr-geral] Duvidas com Right Outer Join 
> 
> Pessoal mais uma vez preciso da vossa ajuda [Alegre] 
> 
> Tenho o seguinte select 
> 
> select distinct f.data_age, a.cod_key, a.cod_id, d.nome, d.end_abr, 
> d.end_cad, d.end_num, d.end_com, d.end_bai, d.end_cid, d.end_est, 
> end_cep, a.pedido, a.data_age, a.hora_age, a.hora_fim, a.codigo, 
> b.descricao, c.qtd_item, e.obs_tecnico, a.tipo, a.agendamento, 
> a.cod_ope, a.data_cad, a.obs, a.observacoes, a.obs_interna 
> from mv_vendas_pre_agenda a 
> inner join mv_produtos b on(b.codigo = a.codigo) 
> inner join mv_vendas_pre_itens c on(c.cod_id = a.cod_id) 
> and(c.pedido = a.pedido) 
> and(c.codigo = a.codigo) 
> and(c.obs not in('C')) 
> left join mv_vendas e on(e.cod_id = a.cod_id) 
> and(e.pedido = a.pedido) 
> inner join mv_clientes d on(d.cod_id = a.cod_id) 
> right join mv_vendas_pre_mes f on(f.data_age = a.data_age) 
> where (a.obs not in('C')) 
> and(b.tipo = 'M') 
> and((a.data_age is null)or(a.data_age >= '01/10/2011')) 
> order by a.data_age, a.hora_age, a.cod_id 
> 
> 
> Desculpe colocar o select todo, mas acho que fica melhor a compreensão 
> 
> A ideia é que a tabelas mv_vendas_pre_mes ( F ) tem registros que não 
> tem na tabela ( A ) 
> Mas preciso trazer essas datas justamente pra mostrar que não existem 
> agendamentos naquele dia. 
> 
> Imagino que o Right Join deveria trazer todos os registros da tabela ( 
> F ) mesmo não contendo a referncia, mas não é isso que ocorre. 
> Não estou compreendendo esse Right 
> 
> Eu preciso que a tabela ( A ) seja a tabela principal do select 
> 


 Olá Marcelo,
Como você não usou parênteses nos seus joins, a ordem de junção será da 
esquerda para direita (conforme [1]).
Seguindo a ordem do seu select, as junções ficariam da seguinte forma:
 ((mv_vendas_pre_agenda+mv_produtos+mv_vendas_pre_itens->mv_vendas)+mv_clientes)<-mv_vendas_pre_mes  
Neste caso, serão mostrados todos os registros da tabela 
"mv_vendas_pre_mes"(direita do right join), e quando tiver relacionamentos, 
mostrará o resultado dos outros joins, senão mostrará null. Aí a tabela 
principal fica sendo a F.
   [1]http://www.postgresql.org/docs/9.0/static/sql-select.html
 Atenciosamente,
 Marçal de Lima Hokama                                    

<<attachment: wlEmoticon-smile[1].png>>

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to