Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us to spark ideas for how to put the latest capabilities into action. Register here!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

QV Load inner join scripting

Hi all,

is it possibile a inner join beetween 3 load tables?

if i run script below pasted i have a error for table not exist :

Table not found

Inner Join(STORICOREPORT)

How can i resolve this problem?

tyvm

Simon

FOR i = Num(Date#('01/12/2012','DD/MM/YYYY')) to Num(Date#('31/12/2012','DD/MM/YYYY'))

 

  

     STORICOEDIZIONI:

     LOAD [ID] AS EDITIONID,[GENERATED_CODE] AS CODICEEDIZIONE where Num(START_DATE) >= Num(Date#('01/01/2012','DD/MM/YYYY')) and Num(EXPIRY_DATE) <= $(i);

     SELECT * from EDITION;

  

     inner join(STORICOEDIZIONI)

     STORICOREPORT:

     LOAD [EDITION_ID] AS EDITIONID,[ID] AS PRESENCEREPID;

      SELECT * FROM PRESENCE_REPORT;

   

      Inner Join(STORICOREPORT)

     STORICOPRESENZE:

     LOAD [PRESENCE_REPORT_ID]AS PRESENCEREPID,[EMPLOYEE_ID]AS PRESEMPID,[TOT_IN_HOURS] AS INHOURS,[TOT_EXTRA_HOURS] AS EXTRAHOURS,[MAN_DAYS] AS GGUOMO WHERE COMPLETED = '1';

     SELECT * FROM PRESENCE_EMPLOYEE;

NEXT;

12 Replies
Not applicable
Author

EMPLOYEE 4.326 linee recuperate

STORICOUO << employee_uo 2.633 linee recuperate

STORICOUO << employee_uo 5.266 linee recuperate

STORICOEDIZIONI << EDITION 761 linee recuperate

PRESENCE_REPORT 6.702 linee recuperate

STORICOEDIZIONI-1 << EDITION 778 linee recuperate

PRESENCE_REPORT 6.702 linee recuperate

$Syn 1 = GIORNO+EDITIONID+CODICEEDIZIONE

Il caricamento è sempre lo stesso, quello STORICOEDIZIONI-1 perde tutti i riferimenti con le altre tabelle sotto.

alexandros17
Partner - Champion III
Partner - Champion III

Ciao Simone,

ho risolto un problema analogo al tuo (dovuto alla join nel ciclo for) in questa maniera, spero ti sia utile:

FOR idx = ...

  MyTableTMP$(idx):

  LOAD fld1 .. fldn from ...

  Left Join

  LOAD fldm ... fldz fom ...

NEXT

MyTable:

NoConcatenate

LOAD '' as fld1,  '' as fldz;

FOR idx = ...

  MyTable:

  Concatenate

  LOAD fld1 ... Resident MyTableTMP$(idx);

  DROP Table MyTableTMP$(idx);

NEXT

Fammi sapere

Not applicable
Author

Sono riuscito in questo modo(alle 2 di notte)

FOR i = Num(Date#('30/06/2012','DD/MM/YYYY')) to Num(Date#('01/01/2013','DD/MM/YYYY'))

    STORICOEDIZIONI:

  

    LOAD $(i) as GIORNO,[EMPLOYEE_ID]AS EMPID,Num([TOT_IN_HOURS]) AS INHOURS,if(Num([TOT_EXTRA_HOURS])<>null(),Num([TOT_EXTRA_HOURS]),0)AS EXTRAHOURS,[MAN_DAYS] AS GGUOMO WHERE COMPLETED = '1'

      AND Num(START_DATE) >= Num(Date#('01/01/'&Year($(i)),'DD/MM/YYYY')) and Num(EXPIRY_DATE) <= $(i);

    SELECT * from EDITION,PRESENCE_REPORT,PRESENCE_EMPLOYEE WHERE EDITION.ID=PRESENCE_REPORT.EDITION_ID AND PRESENCE_REPORT.ID=PRESENCE_EMPLOYEE.PRESENCE_REPORT_ID;

  

    STORICOUO:

    LOAD $(i) as GIORNO,[EMPLOYEE_ID]AS EMPID,[COD_UO]AS CODUO,[DESC_UO] AS DESCRUO,[START_DATE]AS DATAINIZIOUO,[EXPIRY_DATE] AS DATAFINEUO where Num(START_DATE) <= $(i) and Num(EXPIRY_DATE) >= $(i); //and CODAZIENDA = 100;

    SELECT * from employee_uo;

  

        

NEXT;

Ho provato la tua soluzione e sembra essere ok, non capisco però il motivo per cui le join impostate come prima davano quella situazione, in fondo non ho fatto altro che scrivere in 3 parti la stessa query che ora ho unito, mah...

Grazie mille per l'aiuto

Simone