Skip to main content
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