8 Replies Latest reply: Apr 5, 2017 2:19 PM by mauro ponte RSS

    Contador no Sense

    Carlos Maia

      Galera, bom dia.

       

      Estou com uma dúvida acredito que seja básica para os feras aqui da Comunidade.

       

      Tenho 2 tabelas uma chamada " Atendimentos " e outra chamada " Clientes " , onde possuem o mesmo nome de coluna chamada 'Pessoa' que trás o nome dos clientes.

       

      Acontece que preciso fazer uma contagem de quantos clientes eu possuo somente na tabela " Clientes " e não na tabela " Atendimentos" .

      Quando uso :

       

      Count(distinct Pessoa)

       

      Ele logicamente faz a contagem das 2 tabelas pois possuem o mesmo campo " Pessoa".

      Pensei em alterar o nome do campo de uma das tabelas porém vou perder o relacionamento.

       

      Conforme for a resposta nesse tópico usarei pra outras situações onde preciso usar apenas contagens de tabelas específicas.

       

      Forte Abraço amigos!

        • Re: Contador no Sense
          maicon mello

          Bom dia Carlos,

          Em seu Load cria uma string assim :

           

          Load campos, 'Cliente' as TipoPessoa from tabela;

          Na outra cria

          'Atendimento' as TipoPessoa

           

          No seu count pode usar assim : count({<TipoPessoa = {'Cliente'}Pessoa}>} assim ele irá buscar somente cliente.

          • Re: Contador no Sense
            mauro ponte

            Carlos,

             

            Voce tem algunas opçoes para isso, vou te dar duas.

             

            A primeira é manter o nome original do campo Pessoa para nao perder o relacionamento, porem duplicanodo ela na tabela de clientes e renomeando, por exemplo no load para esse campo voce teria duas linhas:

             

            Pessoa,

            Pessoa    as Cliente_Pessoa,

             

            Daí voce conta o campo Cliente_Pessoa.

             

            Outra alternativa seria voce ter um campo que indique a tabela de origem dos registros da tabela de clientes, acrescentndo no load a seguinte linha por exemplo:

             

            'CL'          as Tb_Cliente,

             

            Nesse caso a expressão para contagem seria:

             

            Count({<Tb_Cliente={'CL'}>}distinct Pessoa)


            Espero ter ajudado.


            • Re: Contador no Sense
              MARIO SOARES

              Amigo;

              Não é recomendado realizar um Count() em campos chaves entre tabelas, por conta das cardinalidades;

              No seu caso, utilize o Count() sobre um campo com densidade 100% (representando um registro por pessoa) e que não tenha ligação com a outras tabelas;

              O ideal (boa prática) é criar um campo inteiro e sequencial na tabela que deseja contar;

              Ex.:

              Clientes:
              Load
                  RowNo() As 'SEQ_CLIENTE',
                  Pessoa,
                  ...
              ;
              

               

              Se o registro de pessoa repetir na tabela Cliente, terá que utilizar Distinct;

              De preferência em contar números.

              Abraço.