Daten sollen sich nicht verändern

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

tobydom
***
Beiträge: 74
Registriert: Di, 23.09.2003 16:38

Daten sollen sich nicht verändern

Beitrag von tobydom »

Hallo
Ich habe eine Tabelle für Mitarbeiter, eine weitere mit Projekten und eine dritte mit den geleisteten Stunden bezogen auf die Mitarbeiter und die Projekte.
- Mitarbeiter
- Projekte
- Stunden (von einem bestimmten Mitarbeiter für ein bestimmtes Projekt geleistet)

Nun möchte ich zwei Dinge hiermit machen und ich weiß nicht wie.

1. In der Tabelle Mitarbeiter trage ich den Stundenlohn ein. Bei einer Erhöhung des Gehalts wird der hier entsprechend geändert.
Nun habe ich das Problem, dass der neue Stundenlohn in meinen Abfragen auch für alle vorhergehenden Monate und Jahre verwendet wird.
Wie kann ich das verhindern?
Kann man vielleicht die vorhandenen Daten einfrieren oder so?

2. Ich möchte in meinen Berichten zusätzlich zu den Infos, die ich aus der zugrunde liegenden Abfrage ziehe, auch noch andere Infos aus einer anderen Abfrage oder Tabelle zB in der Kopfzeile anzeigen. Geht das, und wenn ja, wie?

Kann mir jemand von Euch helfen?

Danke,
toby
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Daten sollen sich nicht verändern

Beitrag von DPunch »

tobydom hat geschrieben:. In der Tabelle Mitarbeiter trage ich den Stundenlohn ein. Bei einer Erhöhung des Gehalts wird der hier entsprechend geändert.
Nun habe ich das Problem, dass der neue Stundenlohn in meinen Abfragen auch für alle vorhergehenden Monate und Jahre verwendet wird.
Wie kann ich das verhindern?
Das ist ein "klassischer" Fehler, der oft beim konzeptionellen Aufbau von Datenbanken gemacht wird.

Die Lösung wäre, in der Tabelle Stunden zusätzlich noch den für den entsprechenden Mitarbeiter zu diesem Zeitpunkt geltenden Stundenlohn einzutragen (da dort aller Voraussicht nach sowieso die Mitarbeiter-ID drin steht, kannst Du das bei jedem neuen Stunden-Eintrag automatisch aus Deiner Mitarbeiter-Tabelle übernehmen lassen).

So kannst Du Deine Mitarbeiter-Tabelle immer auf dem aktuellen Stand halten, was den Lohn angeht, verwurstest aber nicht schon bestehende Daten.
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Daten sollen sich nicht verändern

Beitrag von Barlee »

Hallo Toby,

ich würde diese Infos total voneinander abkoppeln, d.h.:
Erstelle eine separate Tabelle mit folgender Struktur

Mitarbeiter_ID; Gehalt, gültig_von; gültig_bis

Somit kannst Du die Gültigkeit des Gehalts pro Mitarbeiter in einem Zeitraum definieren und auch abfragen.

Gruß Barlee
tobydom
***
Beiträge: 74
Registriert: Di, 23.09.2003 16:38

Re: Daten sollen sich nicht verändern

Beitrag von tobydom »

Hi Barlee,
vielen Dank für den Tipp.
Ich habe es genauso gemacht und stehe nun vor dem nächsten Problem.
Ich hoffe Du kannst mir hier weiterhelfen.

Folgende Situation:
tabelle Mitarbeiter:
MA-ID, Vorname, Nachname

tabelle Projekte:
ID, Projektname, Auftragssumme

tabelle Stundenlohn:
ID, MA-ID, Stdlohn, gültigvon, gültigbis

tabelle Arbeitstunden:
ID, Datum, Projekt-ID, MA-ID, Arbeitsstunden

Nun möchte ich eine Abfrage basteln, die zum Beispiel folgendes ausgibt:
23.3.2010, Müller-Schulze, Projekt XY, 7 Arbeitsstunden, Stundenlohn, Gesamtlohn

Wie muss die Abfrage aussehen, die aus der Tabelle Stundenlohn den korrekten Arbeitslohn 'herausfiltert'?

Ich hoffe ich habe mein Problem klar genug erläutert und Du kannst mir helfen.....

Viele Grüße,
Toby
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Daten sollen sich nicht verändern

Beitrag von Barlee »

Toby,
...die aus der Tabelle Stundenlohn den korrekten Arbeitslohn 'herausfiltert'?
Du nimmst das Datum aus der Tabelle "Arbeitsstunden" und fragst ab, ob dieses im definierten Gültigkeitszeitraum der Tabelle "Stundenlohn" liegt.

folgender Ansatz, den Du natürlich ausbauen musst.

Code: Alles auswählen

SELECT ...
"b"."Stdlohn"
FROM "Arbeitsstunden" AS "a", "Stundenlohn" AS "b"
WHERE "a"."Datum" BETWEEN "b"."gültigvon" AND "b"."gültigbis"
AND "a"."MA-ID" = "b"."MA-ID" 
Versuche darauf aufbauend einmal einen Abfrageentwurf.

Gruß Barlee
tobydom
***
Beiträge: 74
Registriert: Di, 23.09.2003 16:38

Re: Daten sollen sich nicht verändern

Beitrag von tobydom »

Ahh.. super.
Der Befehl BETWEEN fehlte mir....

werde es die Tage ausprobieren....
schonmal danke im voraus.
Antworten