Hallo allemaal,
Ik heb problemen met de bouw van een query waarin ik een selectie wil maken van 5 afzonderlijke tabellen. Het gaat om een tijdschrijfsysteem waarbij er 5 tabellen zijn:
Tabel 1 : Project gegevens
Tabel 2 : Taak gegvens (De taken die bij een project horen)
Tabel 3 : Medewerkers (Alle medewerkers die het systeem gebruiken)
Tabel 4 : Taak/Medewerkers (koppel tabel Taak en Medewerkers)
Tabel 5 : Uren (De uren per taak per datum voor een medewerker)

De DB2 /400 ondersteund geen FULL OUTER JOIN vandaar dat ik de volgende query heb gebouwd:
Deze query werkt wel, althans zo dachten we.
We krijgen echter onverwachtse resultaten.
Zo komt het namelijk bij idere medewerker opeens voor dat ze projecten zien die ze nog nooit eerder zagen met daarbij onbekende taken en uren.
Ook komt het voor dat bij wel correcte projecten onbekende taken komen te staan met ongeboekte uren.
Komt het voor, dan zien de mensen meestal dat er op die taken 8 uur is geboekt en soms staat er 42 uur.
De medewerker ID wordt dmv eeb prepared statement later toegevoegd.
Ik ben al dagen bezig met de bouw van dit systeem en zie door de bomen het bos niet meer. Wie kan mij helpen want ik heb het hele internet al doorzocht.
Ik heb problemen met de bouw van een query waarin ik een selectie wil maken van 5 afzonderlijke tabellen. Het gaat om een tijdschrijfsysteem waarbij er 5 tabellen zijn:
Tabel 1 : Project gegevens
Tabel 2 : Taak gegvens (De taken die bij een project horen)
Tabel 3 : Medewerkers (Alle medewerkers die het systeem gebruiken)
Tabel 4 : Taak/Medewerkers (koppel tabel Taak en Medewerkers)
Tabel 5 : Uren (De uren per taak per datum voor een medewerker)

De DB2 /400 ondersteund geen FULL OUTER JOIN vandaar dat ik de volgende query heb gebouwd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| SELECT AUT.TAAK_ID, AUT.TAAK_OM, AUT.TAAK_ST, AUT1.MEDEWERKER_ID,
AUT1.MEDEWERKER_NM, AUT1.MEDEWERKER_CD,
(SUM(HOUR(AUT2.TIJD_TI)) + SUM(MINUTE(AUT2.TIJD_TI))/60) AS TIJD, AUT4.PROJECT_ID, AUT4.PROJECT_OM
FROM OURTOOLS.AUTPJA04 AUT3
LEFT OUTER JOIN OURTOOLS.AUTPJA03 AUT2 ON AUT3.MEDEWERKER_ID=AUT2.MEDEWERKER_ID AND AUT3.PROJECT_ID=AUT2.PROJECT_ID AND AUT3.TAAK_ID=AUT2.TAAK_ID
LEFT OUTER JOIN OURTOOLS.AUTPJA02 AUT1 ON AUT3.MEDEWERKER_ID=AUT1.MEDEWERKER_ID
LEFT OUTER JOIN OURTOOLS.AUTPJA01 AUT ON AUT3.TAAK_ID=AUT.TAAK_ID,
OURTOOLS.AUTPJA00 AUT4
WHERE AUT.PROJECT_ID=AUT4.PROJECT_ID
AND AUT1.MEDEWERKER_ID = ?
GROUP BY AUT.TAAK_ID, AUT.TAAK_OM, AUT.TAAK_ST, AUT1.MEDEWERKER_ID, AUT1.MEDEWERKER_NM, AUT1.MEDEWERKER_CD, AUT4.PROJECT_ID, AUT4.PROJECT_OM
ORDER BY 8, 1 |
Deze query werkt wel, althans zo dachten we.
We krijgen echter onverwachtse resultaten.
Zo komt het namelijk bij idere medewerker opeens voor dat ze projecten zien die ze nog nooit eerder zagen met daarbij onbekende taken en uren.
Ook komt het voor dat bij wel correcte projecten onbekende taken komen te staan met ongeboekte uren.
Komt het voor, dan zien de mensen meestal dat er op die taken 8 uur is geboekt en soms staat er 42 uur.
De medewerker ID wordt dmv eeb prepared statement later toegevoegd.
Ik ben al dagen bezig met de bouw van dit systeem en zie door de bomen het bos niet meer. Wie kan mij helpen want ik heb het hele internet al doorzocht.
MSI K7T 266 PRO | AMD T-bird 1400Mhz 42 idle 49 stressed | 2 * 256 MB PC2100 DDR Major Major | 120 GB IBM Deskstar + 40 GB IBM Deskstar | TNT 2 M64 Gainward PCI | Pioneer DVD-106S | LiteOn LDW 401S @ 411S DVD +/- R(W) | Enlight 300 Watt| IIyama 19"