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;
hi simone put this in your script only give first table name
because 2 table will get joined with 1st hense you have to give 1st table name in join as bellow
Inner Join(STORICOEDIZIONI)
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;
hi simone put this in your script only give first table name
because 2 table will get joined with 1st hense you have to give 1st table name in join as bellow
Inner Join(STORICOEDIZIONI)
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;
Quando fai una inner o left join,
l'alias STORICOREPORT, STORICOPRESENZE ecc. non viene preso in considerazione poichè quella tabella non esiste in quanto accorpata con join alla precedente, per cui dovresti fare nel secondo join :
inner join(STORICOEDIZIONI)
STORICOPRESENZE:
anche se come dicevo il nome STORICOPRESENZE: non è necessario
Mention below scriptthen it will work
Inner Join(STORICOEDIZIONI)
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;
Ciao Alessandro,
sto tentando di fare un ulteriore passaggio.
In pratica ddovrei aggiungere una colonna "GIORNO" col valore della variabile $(i) del ciclo, ho provato ad aggiungerle in questo modo con una tbella "temporanea" alla fine per la selezione.
Sembra funzionare ma per ogni valore di i dopo il primo i dati numericidella STORICOPRESENZE vanno tutti a zero.
In pratica dovrei costruire una tabella che comprenda una colonna giorno e alcuni campi presi dai vari LOAD. E' possibile?
Grazie
FOR i = Num(Date#('30/12/2012','DD/MM/YYYY')) to Num(Date#('31/12/2012','DD/MM/YYYY'))
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;
STORICOEDIZIONI:
LOAD $(i) as GIORNO,[ID] AS EDITIONID,[GENERATED_CODE] AS CODICEEDIZIONE where Num(START_DATE) >= Num(Date#('01/01/2012','DD/MM/YYYY')) and Num(EXPIRY_DATE) <= $(i);
//LOAD $(i) as GIORNO,[ID] AS EDITIONID,[GENERATED_CODE] AS CODICEEDIZIONE where Num(START_DATE) >= Num(Date#('01/01/'&Year($(i)),'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(STORICOEDIZIONI)
STORICOPRESENZE:
LOAD [PRESENCE_REPORT_ID]AS PRESENCEREPID,[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';
SELECT * FROM PRESENCE_EMPLOYEE;
temporanea:
LOAD $(i) as GIORNO AutoGenerate(1) ;
NEXT;
Ciao Simone,
secondo me funziona ma la tabella temporanea non è necessaria in quanto il valore di giorno è già inserito nella Load.
Prova ad eliminare la temporanea e fammi sapere
Ciao
Effettivamente era inutile, ma rimane il problema che se ad esempio lanciodal 30-12-2012 al 31-12-2012 per il secondo giorno i valori della STORICOPRESENZE vanno tutti a null.
Grazie
Io non credo che la sola aggiunta del campo giorno (Corretta tra l'altro) dia questo errore, sospetto che il problema possa derivare dalla tabella STORICOUO che va in associazione con la STORICOEDIZIONI.
Per analizzare il problema fai così:
1) elimina (temporaneamente) la tabella STORICOUO dal for e verifica che tutto funzioni (come penso)
2) se non dovesse funzionare verifica che senza il campo giorno tutto funzioni.
Fammi sapere.
P.S.
Purtroppo potrò risponderti domattina però ...
Ho notato che la tabella "storicoedizioni" al secondo giro del ciclo diventa storicoedizioni-1 e perde i campi.
grazie
simone
La soluzione piu semplice e' la seguente:
Crea fuori dal ciclo una tabella
STORICOEDIZIONI:
load null() as giorno, null() as EDITIONID e così via per tutti i campi delle tre tabelle in join.
Nel ciclo non usare alias di tabelle ma lega tutto alla STORICOEDIZIONI così come già fai e vedrai che il gioco è fatto.