Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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;
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.
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
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