Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
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
Partner - Specialist
Partner - Specialist

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
Partner - Specialist
Partner - Specialist

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
Partner - Specialist
Partner - Specialist

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