Hallo,
unter der Annahme, dass Deine drei Tabellen (Kurzfassung etwas angepasst) folgendermaßen definiert sind:
Code:
Mitarbeiter (ID, Vorname, Nachname)
Arbeitszeit (ID, Mitarbeiter_ID, Stunden)
Abwesenheit (ID, Mitarbeiter_ID, Stunden)
Dann sollte Dir das folgendes
SQL-Statement
SQL-Code:
SELECT "Mitarbeiter"."Vorname" + SPACE (1) + "Mitarbeiter"."Nachname" AS Name, SUM( "Arbeitszeit"."Stunden" ) AS "Arbeitszeit (Stunden)", SUM( "Abwesenheit"."Stunden" ) AS "Abwesenheit (Stunden)"
FROM Mitarbeiter
LEFT OUTER JOIN "Arbeitszeit" ON "Mitarbeiter"."ID" = "Arbeitszeit"."Mitarbeiter_ID"
LEFT OUTER JOIN "Abwesenheit" ON "Mitarbeiter"."ID" = "Abwesenheit"."Mitarbeiter_ID"
GROUP BY Name
das gewünschte Ergebnis liefern
Code:
| Name | Arbeitszeit (Stunden) | Abwesenheit (Stunden) |
|----------------+-----------------------+-----------------------|
| Max Mustermann | 130 | 8 |
Ich kenne jetzt zwar den Rest Deiner Tabellendefinitionen nicht, aber denk mal darüber nach, welchen Informationsgehalt obiges Ergebnis hat, wenn in der Entwicklungsabteilung ein Max Mustermann an neuen Gebrauchsmustern tüftelt und gleichzeitig - weder verwandt noch verschwägert - in der konzerneigenen Kantine ein Max Mustermann (unterschiedlichen Mitarbeiter ID) für das Scheuern gebrauchter Töpfe und Pfannen zuständig ist? Wie teilen sich dann die Anwesenheits- und Abwesenheitsstunden auf?
Mit:
SQL-Code:
SELECT "Mitarbeiter"."ID" AS ID, "Mitarbeiter"."Vorname" + SPACE (1) + "Mitarbeiter"."Nachname" AS Name, SUM( "Arbeitszeit"."Stunden" ) AS "Arbeitszeit (Stunden)", SUM( "Abwesenheit"."Stunden" ) AS "Abwesenheit (Stunden)"
FROM Mitarbeiter
LEFT OUTER JOIN "Arbeitszeit" ON "Mitarbeiter"."ID" = "Arbeitszeit"."Mitarbeiter_ID"
LEFT OUTER JOIN "Abwesenheit" ON "Mitarbeiter"."ID" = "Abwesenheit"."Mitarbeiter_ID"
GROUP BY "Mitarbeiter"."ID", Name
Bekommst Du zumindest
Code:
| ID | Name | Arbeitszeit (Stunden) | Abwesenheit (Stunden) |
|---------------------+-----------------------+-----------------------|
| 27 | Max Mustermann | 60 | 8 |
| 81 | Max Mustermann | 70 | 0 |
Gruß