14 Replies Latest reply: Oct 29, 2014 7:44 AM by Luciano Vasconcelos RSS

    Relacionamento de N para N

    Antonio Mercadante

      Sr(as). Boa tarde!

       

      Alguém sabe como posso resolver a seguinte situação.

       

      Tenho duas tabelas que possuem o numero do contrato, data da venda em comum.

      Porem, o relacionamento delas é de N pra N.

      Tenho para um mesmo contrato em uma mesma data de venda vário registros. Esta Situação é comum entre as duas tabelas.

       

      Tabela A

       

      Numero contratoData Venda
      000123/10/2014
      000123/10/2014
      000222/10/2014
      000222/10/2014
      000222/10/2014

       

      Tabela B

      Numero ContratoData VendaData Pagamento
      000123/10/201427/10/2014
      000123/10/201427/10/2014
      000222/10/201424/10/2014
      000222/10/201424/10/2014
      000222/10/201424/10/2014
      000222/10/201424/10/2014

       

      Conforme exemplo acima, o cliente 0002 fez três compras, mas consta 4 pagamentos, pois pagou uma fatura em duplicidade.

       

      Não estou conseguindo relacionar estas tabelas.

       

      Alguém pode mostrar o caminho das pedras ?

       

      Obrigado!

        • Re: Relacionamento de N para N
          Luciano Vasconcelos

          É simples.

          Você vai criar uma chave composta por Numero Contrato e Data Venda, nas duas tabelas e manter o valor dos campos em uma só delas.

          Outra solução seria concatenar as duas tabelas.

           

          [Numero Contrato] & '|' & [Data Venda] as Key_Venda

          • Re: Relacionamento de N para N
            Thiago Manoel Gonçalo

            Antonio, boa tarde.

             

            Apenas para detalhar melhor o que o Luciano colocou, a composição da carga seria assim:

             

            Imagine que sua tabela seja:

             

            A primeira que contem somente Numero contrato e venda.. seria por exemplo a Tabela de vendas e a segunda seria tabela pagamento, entao seria.

             

            Vendas:

            Load

            [Numero Contrato] & '|' & [Data Venda] as Key_Venda

            [Numero Contrato]                               as NumeroContrato1

            [Data Venda]                                       as DataVenda1

            o resto dos campos

            from *****


            Pagamentos:

            Load

            [Numero Contrato] & '|' & [Data Venda] as Key_Venda

            [Numero Contrato]                               as NumeroContrato2

            [Data Venda]                                       as DataVenda2

            o resto dos campos

            From ****


            Desta forma o relacionamento entre as tabelas se dará apenas pela KEY_VENDA.


            Espero ter ajudado.



              • Re: Relacionamento de N para N
                Antonio Mercadante

                Bom dia Thiago!

                 

                Então, o problema é que estas  tabelas estão sendo carregadas em um painel que já esta em produção.

                 

                Para minha necessidade o ideal seria a união das duas tabelas em um unica, porem a  dificuldade esta justamente em unir elas. Como é N para N ela esta multiplicando os valores

                 

                No exemplo da tabela que eu postei, tenho o contrato 0002 que na tabela A possui três registros com mesma data.

                Na tabela B "pagamento" possui quatro registros, pois o cliente pagou uma fatura em duplicidade.

                 

                Quando faço um join das tabelas ele mostra muito mais registros do que tenho.

                 

                O inverso também pode acontecer, exemplo:

                O mesmo Cliente efetua mais de uma compra no mesmo dia, porem efetua o pagamento somente de uma compra.

                Não tenho nenhum campo que faça a distinção das linhas. Tabela A ,é Contrato, Data Venda, Nome do Produto e Valor da Venda. e para a Tabela B é Contrato, Data Venda e Data Pagamento.

                 

                Esse problema esta mais para modelagem do que o próprio qlikview. Pelo menos é o que acho.