Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
leandroayala
Contributor III
Contributor III

Relacionamento com duas PKs

Bom dia, Pessoal!

Eu tenho um dúvida do funcionamento e de qual a melhor forma de resolver a seguinte questão:

Possuo duas tabelas. Uma de venda e uma de contrato. Essa tabela de contrato tem dois campos VENDA1 e VENDA2 que são registros chaves da tabela VENDA

Então o que eu fiz foi criar duas chaves na tabela CONTRATO (PK1 e PK2) referente ao codigo da venda 1 e da venda 2.

Ao fazer isso, o Qlikview criou a Synthetic table com as duas PKs. Mas minha intenção é quando eu seleciona-se o registro CONTRATO, na tabela venda fossem selecionados os dois registros da venda. Mas quando seleciono somente é mostrado um dos registros da tabela venda.

Capturar.PNG

1 Solution

Accepted Solutions
Ricardo_Gerhard
Employee
Employee

Sim, entendo.

Mas criando a tabela como mencionado creio que irá atender.

Ricardo Gerhard
OEM Solution Architect
LATAM

View solution in original post

7 Replies
Thiago_Justen_

Leandro,

Se entendi bem o que queres, talvez o link table te ajude.

Exemplo Link Table

Ou ainda, ao invés de criar duas PK's, poderia criar uma PK composta:

Venda:

Load

        *,

        PK1 & PK2 as PK_Composta

From SUA_BASE;

Contrato:

Load

        *,

        PK1 & PK2 as PK_Composta

From SUA_BASE;

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
leandroayala
Contributor III
Contributor III
Author

Vou fazer o teste. Mas pra tentar explicar de forma pratica:

CONTRATO

COD       VENDA1          VENDA2

1             15                     18

2             16                     17

VENDA

COD    DATA  ETC
15          

16
17
18

Quando eu selecionar o registro do contrato (CODIGO 1) a seleção da tabela VENDA deverá ser (COD 15 e COD 18). CONTRATO COD 2, VENDA: COD 16 e 17

Thiago_Justen_

Que tal isso:

CONTRATO_TEMP:

LOAD * INLINE [

COD,VENDA1,VENDA2

1,15,18

2,16,17

];

VENDA:

LOAD

COD AS PK_VENDA,

    DATA;

LOAD * INLINE [

COD,DATA

15,04/04/2018         

16,01/02/2017

17,03/05/2018

18,12/12/2012

];

CONTRATO:

LOAD

COD,

    VENDA1 AS PK_VENDA

Resident CONTRATO_TEMP;

Concatenate (CONTRATO)

LOAD

COD,

    VENDA2 AS PK_VENDA

Resident CONTRATO_TEMP;

DROP TABLE CONTRATO_TEMP;

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Ricardo_Gerhard
Employee
Employee

Bom dia Leandro,

   Só para entendimento, vc quer criar algo como abaixo?

CONTRATO

COD_Contrato         COD_VENDA

1                              15                    

1                              18

2                              16                   

2                              17


VENDA

COD_VENDA    DATA  ETC
15         

16
17
18

Ricardo Gerhard
OEM Solution Architect
LATAM
leandroayala
Contributor III
Contributor III
Author

Não exatamente. Na tabela CONTRATO, realmente eu tenho dois campos que se referenciam a duas vendas que estão na mesma tabela venda.

Ricardo_Gerhard
Employee
Employee

Sim, entendo.

Mas criando a tabela como mencionado creio que irá atender.

Ricardo Gerhard
OEM Solution Architect
LATAM
Thiago_Justen_

leandroayala‌, conseguiu testar o script que te mandei? Acho que a ideia é bem por aí.

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago