8 Replies Latest reply: Apr 11, 2012 10:15 AM by Eduardo Correa da Silva RSS

    Dúvida tratamento de campos em duas tabelas interligadas

      Olá, boa tarde!
      Pessoal, tenho duas tabelas  Pedido, que armazena a informação de pedido e Faturamento, que armazena as informaçoes de faturamento,

      ambas por período,  representante e familia de produto.

       

      A minha dúvida é a seguinte:

       

      1) uni as duas tabelas criando um chave por periodo e familia de produto;

      2) Criei duas tabelas (grafico) uma demonstrando os pedidos e outra o faturamento por familia de produto.

      3) Quando fui validar os dados encontrei uma diferença entre o valor que eu tinha no meu SELECT para um determinado periodo e o que mostrava na tabela (grafico de faturamento),

       

      O que percebi é que na tabela de faturamento ele só me mostrou as familias de produto que existem na tabela PEDIDOS, e acontece que em determinado periodo eu tenho faturamento de determinada familia, mas para aquele periodo não tenho pedidos para aquela familia

       

      Daí pergunto, Como eu posso tratar para mostrar todas as familias de produtos?
      Como eu trato o script para fazer isso?


      Desde já agradeço a atenção e ajuda,
      Segue print e script em anexo.

       

      Abs,

      Juliana.

        • Dúvida tratamento de campos em duas tabelas interligadas
          rodrigo silvestre

          Acredito que isso acontece pelo uso do left join ... ele pega somente as familias que estão na primeira tabela...

          Se eu não me engano o que você teria que utilizar seria outer join ... que pega a familia das 2 tabelas...

            • Dúvida tratamento de campos em duas tabelas interligadas

              Olá Rodrigo,
              Você diz o LEFT que uso em relação a tabela FAMILIA_PRODUTO em cada uma das tabelas PEDIDO_HISTORICO e FATURAMENTO_LIQUIDO?

              Você chegou a ver o script das tabelas que eu mandei? será que ali não tem alguma inconsistência?

               


              Até mudei isso para outer join, mas não influenciou em nada.

               

              Desde já agradeço a ajuda

               

              Abs,

              Juliana Holstein.

                • Re: Dúvida tratamento de campos em duas tabelas interligadas

                  Boa Tarde Juliana,

                   

                  Ja passei por este mesmo problema.

                   

                  Acontece que quando você deve inserir pelo menos um registro para esta informação, ou seja, completar a tabela faturamento.

                   

                  Uma forma de você alimentar estar informações é criando uma tabela auxiliar com os valores zerados e em seguida concatenar com a tabela principal afim de mostrar todos os valores.

                   

                  Segue um pequeno exemplo do que mencionei acima.

                    • Re: Dúvida tratamento de campos em duas tabelas interligadas

                      Olá Eduardo, boa tarde!
                      Na verdade eu teria que tratar a minha tabela de pedidos né? Porque tenho familias de produtos na minha tabela faturamento e não na pedido para aquele periodo.

                       

                      Neste exemplo que você me mandou, eu preciso tratar todos os campos que tenho na minha tabela pedido?

                      Ou por exemplo, só trato data e a familia do produto e seu respectivo valor, que neste caso será zero.

                       

                      O que você me indica?

                       

                      Desde já agradeço sua ajuda.

                       

                      Abs,

                      Juliana

                        • Dúvida tratamento de campos em duas tabelas interligadas

                          Ola Juliana,

                           

                          Neste caso eu verificaria qual é o menor e o maior período de cada tabela e geraria esta tabela auxiliar levando em consideração as duas tabelas.

                           

                          O tratamento também deveria ser realizado na tabela de pedido e na de faturamento, pois neste exemplo que você mencionou, ocorreu de não existir pedidos, mas acredito que poderia ocorrer o inverso também não?

                           

                          No seu caso, deveria tratar todos os campos da sua tabela, uma tabela somente com a data e a outra com os demais campos (exluindo as colunas de valores) no meu exemplo utilizei um exemplo pequeno mas poderia existir mais campos.

                           

                          Fica dificil tentar resolver sem um exemplo, mas se você conseguir o que esta ocorrendo e compreender a logica da solução que propuz acho que consegue resolver esta questão.

                           

                          Abraços

                            • Re: Dúvida tratamento de campos em duas tabelas interligadas

                              Olá Eduardo,

                              Preciso muito de sua ajuda, não estou conseguindo fazer o tratamento na tabela de historico de pedidos para mostrar todas as familias de produto por dia.

                               

                              Em anexo eu tenho o script do load que faço das duas tabelas FAMIILIA / HISTORICO_PEDIDO.

                              Na historico de pedido tenho o campo data_carteira, que é o campo que utilizo para gerar a tabela de datas como no seu exemplo, e crio uma tabela familia, que é o grupo do seu exemplo.

                               

                              Até a união destas duas tabelas familia e data, funciona certinho.
                              Porém quando vou unir esta tabela que criei com a tabela HISTORICO_PEDIDO, ele não traz mas as familias que não existem na tabela HISTORICO_PEDIDO e que existem na minha tabela que criei com os valores zerados.


                              podes me dar um help?

                               

                              Desde já agradeço,
                              Juliana.

                                • Dúvida tratamento de campos em duas tabelas interligadas

                                  Eduardo,

                                  Complementando o histórico anterior:

                                  Até esta parte aqui está ok:

                                   

                                  TABELA_FAMILIA:
                                  LOAD DISTINCT CD_FAMILIA AS TAB_COD_FAMILIA
                                  FROM C:\Qlikview\Producao\QVD\FAMILIA_PRODUTO.qvd (qvd);

                                   

                                  TABELA_DATA:
                                  NOCONCATENATE
                                  LOAD DISTINCT DATA_CARTEIRA AS TAB_DATA_DT_CARTEIRA
                                  FROM C:\Qlikview\Producao\QVD\HISTORICO_PEDIDO.qvd (qvd);

                                   

                                  TABELA_TRATAR_VALOR_ZERO:
                                  NOCONCATENATE
                                  LOAD TAB_COD_FAMILIA,
                                    0 AS VALOR
                                  RESIDENT TABELA_FAMILIA;

                                   

                                  TABELA_DATA:
                                  JOIN (TABELA_TRATAR_VALOR_ZERO)
                                  LOAD TAB_DATA_DT_CARTEIRA
                                  RESIDENT TABELA_DATA;

                                   

                                  DROP TABLES TABELA_DATA, TABELA_FAMILIA;

                                   

                                  Ele gera a tabela com todas as datas e familia por dia, mas agora preciso fazer o union com a tabela HISTORICO_PEDIDO, que está no arquivo em anexo anterior, mas daí não funciona.

                                   

                                  Creio também que na tabela sem valor quando leio a familia e crio um campo valor zerado, tenho que ler todos os campos da tabela HISTORICO_PEDIDO e zera-los ne?


                                  Obrigada,

                                  Juliana.