On 01/10/2013 13:49, JotaComm wrote:
Opa,


Em 1 de outubro de 2013 12:37, Thiago <zan...@farmaponte.com.br
<mailto:zan...@farmaponte.com.br>> escreveu:

    On 01/10/2013 11:10, JotaComm wrote:

        Opa,


        Em 1 de outubro de 2013 10:50, Thiago
        <zan...@farmaponte.com.br
        <mailto:zan...@farmaponte.com.br>
        <mailto:zan...@farmaponte.com.__br
        <mailto:zan...@farmaponte.com.br>>>
        escreveu:


             Bom dia a todos.

             Tenho as seguintes tabelas

             tb_venda
             loja venda
             1    10
             2    20

             tb_meta
             loja meta
             2    40
             3    60

             Eu precisava fazer uma consulta trazendo tudo de tudo, o
        que cruzar
             e o que não cruzar, para tal fiz o seguinte sql.

             select
                 coalesce(a.loja,b.loja) as loja,
                 coalesce(a.venda,0) as venda,
                 coalesce(b.meta,0) as meta
             from tb_venda a
             full outer join tb_meta b on a.loja = b.loja

             Como resultado eu teria os seguintes dados:
             loja venda meta
             1    10    0
             2    20    40
             3    0     60

             O que fazer quando eu não tenho registros na tabela
        tb_venda, tenho
             apenas na tabela meta?

             Gostaria que viesse o seguinte resultado:

             loja venda meta
             2    0     40
             3    0     60


        Não conseguei entender exatamente o que você quer: Por que a
        loja 1 não
        deve aparecer no resultado? Pelo que vi aparecem somente os
        registros da
        tabela tb_meta.


             Obrigado pela ajuda.

             ___________________________________________________
             pgbr-geral mailing list

        pgbr-geral@listas.postgresql.____org.br
        <http://org.br>
             <mailto:pgbr-geral@listas.__postgresql.org.br
        <mailto:pgbr-geral@listas.postgresql.org.br>>
        
https://listas.postgresql.org.____br/cgi-bin/mailman/listinfo/____pgbr-geral


        
<https://listas.postgresql.__org.br/cgi-bin/mailman/__listinfo/pgbr-geral
        <https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral>>



        Abraços
        --
        JotaComm
        http://jotacomm..wordpress.com <http://jotacomm.wordpress.com>


    JotaComm, boa tarde.

    Eu questionei no caso de tabela tb_venda estar vazia, como faria
    para trazer os registros da tb_meta. Como se eu tivesse a seguinte
    estrutura:

    tb_venda
    loja venda


    tb_meta
    loja meta
    2    40
    3    60

    Preciso ter o resultado abaixo utilizando a tabela tb_venda como
    esquerda (principal).


    loja venda meta
    2    0     40
    3    0     60

    Acontece que em determinados momentos a mesma pode estar vazia e
    neste caso não está trazendo as metas.


Ainda não consegui entender (Confuso ainda): Por exemplo, na tabela
tb_venda não tem o código 3, porém você quer que apareça no resultado,
logo se você usar a tabela tb_venda como principal isso não vai
acontecer (LEFT OUTER JOIN).

Existem alguma relação entre a coluna meta de tb_meta e a coluna venda
de tb_venda. Algo como se o valor de meta (tb_meta) for maior ou igual a
venda (tb_venda)?


    Obrigado!


    _________________________________________________
    pgbr-geral mailing list
    pgbr-geral@listas.postgresql.__org.br
    <mailto:pgbr-geral@listas.postgresql.org.br>
    https://listas.postgresql.org.__br/cgi-bin/mailman/listinfo/__pgbr-geral
    <https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral>



Abraços
--
JotaComm
http://jotacomm.wordpress.com



Não, na verdade o campo de referencia é o loja. É que quando comecei a utilizar o left outer join eu imaginei que ele traria de qualquer dos lados, mas viajei.

Vou criar uma subconsulta com union nas tabelas antes de cruzar, acredito ser a melhor solução. Algo como:

select tm.loja
from (
  select loja from tb_venda
  union all
  select loja from tb_meta
) as tm
group by tm.loja

E depois utilizar o resultado disso para cruzar com as outras.

Obrigado pela ajuda.

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

Responder a