12 Replies Latest reply: Mar 27, 2015 11:37 AM by Edson Lana RSS

    where exists

    Edson Lana

      Boa tarde,

       

      Estou com problemas ao executar o where exists. Ele não me retorna nenhum valor.

      Eu preciso que ele retorne o nome do cliente que esteja na nota fiscal. Pois tenho uma tabela com todos os clientes cadastrados, mas quero somente os clietnes que tem nota fiscal.

       

      Poderiam me ajudar?

       

      Chamados:

      LOAD

           [Id Nome], [Número Nota];

       

       

      SELECT Id as [Número Nota],

                   Fk_Client as [Id Nome],

      FROM NF;

       

      [Cliente]:

      LOAD

            [Id Nome],

            Nome

            Telefone

           where Exists(Fk_Client ,Id);

       

      SELECT

            Id as [Id Nome],

            Nome,

            Telefone

      FROM Cliente;

        • Re: where exists
          Manish Kachhia

          Chamados:

          LOAD

               [Id Nome], [Número Nota];

           

           

          SELECT Id as [Número Nota],

                       Fk_Client as [Id Nome],

          FROM NF;

           

          [Cliente]:

          LOAD

                [Id Nome],

                Nome

                Telefone

               where Exists( [Id Nome]);

           

          SELECT

                Id as [Id Nome],

                Nome,

                Telefone

          FROM Cliente;

          • Re: where exists
            Fernando Tonial

            Olá,

             

            Segue a sintaxe da função

            Exists(campo [ , expressão ])

             

            Determina se um valor de campo específico existe em um campo especificado dos dados carregados até o momento. Campo é um nome ou uma expressão de caractere que é avaliada para um nome de campo. O campo deve existir nos dados carregados até o momento pelo script. Expr é uma expressão avaliada para o valor de campo a ser pesquisado no campo especificado. Se for omitido, será assumido o valor do registro atual no campo especificado.

             

            Em seu Caso altere de

            where Exists(Fk_Client ,Id);
            

             

            para

            where Exists([Id Nome]);
            

             

            Pois você possui apenas o campo [Id Nome] nas duas tabelas.

             

            Don't worry, be Qlik.

            Tonial.

              • Re: where exists
                Edson Lana

                Fernando o campo [Id Nome] só tenho nas duas tabelas, porém quando executei trouxe todos os nomes de cliente.

                  • Re: where exists
                    Fernando Tonial

                    Faça assim então. Crie um campo temporário.

                     

                    Chamados:

                    LOAD

                         [Id Nome], [Número Nota], [Id Nome] AS Fk_Cliente;

                     

                     

                    SELECT Id as [Número Nota],

                                 Fk_Client as [Id Nome],

                    FROM NF;

                     

                    [Cliente]:

                    LOAD

                          [Id Nome],

                          Nome

                          Telefone

                         where Exists(Fk_Cliente, [Id Nome]);

                     

                    SELECT

                          Id as [Id Nome],

                          Nome,

                          Telefone

                    FROM Cliente;

                     

                    Drop Field Fk_Client;

                     

                    Don't worry, be Qlik.

                    Tonial.

                      • Re: where exists
                        Edson Lana

                        Não deu certo

                         

                        ele continua trazendo toda a informação de cliente.

                         

                        No banco de dados da certo, pois é utilizado o inner join com isso retorna pouco registros, ou seja, na minha tabela de nota tenho apenas alguns 'Id's Nome'

                  • Re: where exists
                    Thiago Gonçalo

                    Se vc quer na tabela Chamados apenas que ele traga os dados dos clientes que vc tem nota fiscal na tabela chamados:

                     

                    Faça o seguinte,

                     

                    Chamados:

                    LOAD

                         [Id Nome],

                         [Número Nota];

                      SELECT Id as [Número Nota],

                                 Fk_Client as [Id Nome],

                    FROM NF;

                     

                    left join

                     

                    LOAD

                          [Id Nome],

                          Nome

                          Telefone

                    SELECT

                          Id as [Id Nome],

                          Nome,

                          Telefone

                    FROM Cliente;

                      • Re: where exists
                        Edson Lana

                        Pessoal nao deu certo..

                         

                        Veja se minha logica faz sentido.

                         

                        Tenho uma tabela de Chamados, nela tenho: Numero da Nota fiscal, Tipo da nota, data, tenho também o Id Nome, que é uma chave para a tabela de Cliente, na tabela cliente tenho informações de todos os clientes.

                         

                        Vejam se faz sentido: Eu quero trazer pra minha tabela chamados, ou pro meu campo Id Nome, apenas clientes que possuem nota, ou seja, só terei no qlikview a lista de clientes que tiverem nota. Como falei antes no bando de dados faço essa ligação atraves da tabela chamados inner join com a tabela de clientes ligando pelo Id Nome e la me retorna apenas esses clientes, há algum erro de sintaxe, lógica?

                          • Re: where exists
                            Alessandro Furtado

                            Boa noite.

                             

                            Se fizer a carga das duas tabelas e olhar o conteúdo do campo cliente ele é igual nas duas ou pode ter vindo com formatos diferentes (ex:0001    e no outro load 1 )

                             

                            Se colocar duas tabelas na tela.  Uma de nota e a outra com cliente.  Ao selecionar uma nota, ele mostra somente 1 linha na tabela cliente?

                             

                            Outra curiosidade.  Antes destes LOAD não tem alguma outra parte do script (antes...) que lê o campo [Id Nome])  ?

                             

                            AMF

                        • Re: where exists
                          Thiago Gonçalo

                          Se puder poste o seu .qvw para corrigirmos pra vc..

                            • Re: where exists
                              Thiago Gonçalo

                              Agora assim.. vc quer apenas trazer os clientes que tenham nota fiscal.. poderia fazer de uma outra forma..

                              faz join das tabelas e depois verifica se o campo nota é null.. seria assimm...

                               

                               

                              Faça o seguinte,

                               

                              Chamados_TEMP:

                              LOAD

                                   [Id Nome],

                                   [Número Nota];

                                SELECT Id as [Número Nota],

                                           Fk_Client as [Id Nome],

                              FROM NF;

                               

                              join

                               

                              LOAD

                                    [Id Nome],

                                    Nome

                                    Telefone

                              SELECT

                                    Id as [Id Nome],

                                    Nome,

                                    Telefone

                              FROM Cliente;

                               

                              Chamados:

                              LOAD

                              [Id Nome],

                                   [Número Nota],

                              Nome,

                                    Telefone

                              RESIDENT Chamados_TEMP

                              where not isnull( [Número Nota]);

                              drop table Chamados_TEMP;