Ein Dienstplan liegt in Tabellenform vor und beinhaltet neben der Mitarbeiternummer, Felder für jeden 15 min Abschnitt beginnend von 06:45 – 17:00 Uhr und je ein Ja/Nein Feld welches immer dann ein Ja beinhaltet, wenn das entsprechend zugehörige 15 Minuten-Abschnittsfeld gefüllt ist.
Dieser Dienstplan funktioniert wunderbar, aber die elektronische Zeiterfassung die mit UNION SELECT darauf zugreift rechnet trotz oder wegen der Anwendung von Filtern recht lange.
Die Tabelle beinhaltet ca 20.000 aktuelle Datensätze in folgender Struktur.
MitarbeiterID, 06:45, 07:00, 07:15... 17:00, 0645YN, 0700YN, 0715YN...1700YN
ID 06:45 07:00 07:15 ..17:00 0645YN 0700YN 0715YN ..1700YN
12345 A A A A -1 -1 -1
23456 B B -1 -1
Was ist jetzt suche ist etwas was schneller ist als eine Unionabfrage um herauszufinden um wieviel Uhr der jeweilige Mitarbeiter zum Dienst erscheinen muss bzw. wann er gehen darf.
Das Endergebnis soll dann wie folgt aussehen
ID Kommen Gehen
12345 06:45 17:00
23456 07:00 07:15
jemand eine Idee?
ZitatDas Endergebnis soll dann wie folgt aussehen
Die gewünschte Tabelle sollte von einer Zeiterfassung gleich so erstellt werden, da sie
- sehr sicher sehr einfach fortzuschreiben wäre (einfach neuen Datensatz anfügen statt erst eine Abfrageberechnung)
- den nötigen Strukturen in einer Datenbank und deren üblichen Verarbeitungen entspricht
Dieses Ding als Ausgangsbasis solltest Du also einmalig auf die neue Struktur umstellen und dann schnellstmöglich entsorgen.
Danach braucht man sichtbar keine UNION-Abfrage mehr. Zusätzlich werden dann Indizes in der Tabelle sinnvoll und nutzbar, was der Performance einen weiteren Schub geben kann.
Danke für die Antwort
Das Problem liegt gar nicht an der Zeiterfassung an sich sondern im Dienstplan, der aufbereitet werden muss, um die Rahnendaten für die Zeiterfassung bereitzustellen.
Ich habe das jetzt so gelöst, dass die benötigten Daten aus dem Dienstplan direkt beim Schreiben des Dienstplanes erzeugt werden und so ohne langes her direkt von der Zeiterfassung gezogen werden können.