Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

where exists

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;

1 Solution

Accepted Solutions
fernando_tonial
Employee
Employee

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.

Don't Worry, be Qlik.

View solution in original post

12 Replies
MK_QSL
MVP
MVP

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;

fernando_tonial
Employee
Employee

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.

Don't Worry, be Qlik.
Not applicable
Author

Então ele trouxe toda a informação.

Era pra trazer apenas os Id Nome que estão na tabela cliente que estivessem no Id Nome da tabela NF.

foi isso que vc me falou?

Not applicable
Author

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

fernando_tonial
Employee
Employee

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.

Don't Worry, be Qlik.
Not applicable
Author

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'

thiago_mlg
Creator II
Creator II

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;

Not applicable
Author

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?

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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

furtado@farolbi.com.br