Daten sollen sich nicht verändern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Daten sollen sich nicht verändern

Re: Daten sollen sich nicht verändern

von tobydom » Do, 25.03.2010 12:56

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

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

Re: Daten sollen sich nicht verändern

von Barlee » So, 21.03.2010 20:36

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

Re: Daten sollen sich nicht verändern

von tobydom » So, 21.03.2010 20:00

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

Re: Daten sollen sich nicht verändern

von Barlee » Mo, 01.03.2010 18:22

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

Re: Daten sollen sich nicht verändern

von DPunch » Mo, 01.03.2010 17:45

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.

Daten sollen sich nicht verändern

von tobydom » Mo, 01.03.2010 17:11

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

Nach oben