19.07.2010
21:00 von
TBT
[MySQL] den Fünftletzten bitte
Hi,
kleine Knobelaufgabe am Abend
Ich habe eine Tabelle, wo Einträge mit einem Start- und einem Enddatum gemacht werden. Nun möchte ich eine Vearbeitungskette haben, welche immer nur 5 (kann später anders sein) Einträge gleichzeitig "abarbeitet". Die Abarbeitung bezieht dabei auf die aktuelle Zeit. D.h. wenn zu einem
Zeitpunkt bereits 5 Einträge laufen, soll der 6. Eintrag als Startzeit die Endzeit des ersten Eintrages erhalten.
Ist blöde zu erklären, daher kleines Beispiel:
zum Zeitpunkt 3 sind gerade id 1,2,3,4,5 in Abarbeitung. ID 6 kann erst starten, wenn ID 2 fertig ist, also bei Zeitpunkt 4. Nun möchte ich den Zeitpunkt ermitteln, wann ein Arbeitsplatz frei wird, in diesem Beispiel wäre es 5, da dort dann ID 1 beendet wird.
Als kleines Extra: die Tabelle kann mit sehr vielen Einträgen gefüllt ein, 100 können es locker werden. Alle sollen sich schön anstellen, so dass, immer nur 5 gleichzeitig laufen.
Am liebsten wäre mir eine SQL Anweisung, die mit den Startzeitpunkt für den neu einzufügenden Datensatz ausgibt.
kleine Knobelaufgabe am Abend

Ich habe eine Tabelle, wo Einträge mit einem Start- und einem Enddatum gemacht werden. Nun möchte ich eine Vearbeitungskette haben, welche immer nur 5 (kann später anders sein) Einträge gleichzeitig "abarbeitet". Die Abarbeitung bezieht dabei auf die aktuelle Zeit. D.h. wenn zu einem
Zeitpunkt bereits 5 Einträge laufen, soll der 6. Eintrag als Startzeit die Endzeit des ersten Eintrages erhalten.
Ist blöde zu erklären, daher kleines Beispiel:
Code
1
2
3
4
5
6
7
2
3
4
5
6
7
id start ende
1 1 5
2 2 4
3 1 7
4 1 9
5 2 8
6 4 6zum Zeitpunkt 3 sind gerade id 1,2,3,4,5 in Abarbeitung. ID 6 kann erst starten, wenn ID 2 fertig ist, also bei Zeitpunkt 4. Nun möchte ich den Zeitpunkt ermitteln, wann ein Arbeitsplatz frei wird, in diesem Beispiel wäre es 5, da dort dann ID 1 beendet wird.
Als kleines Extra: die Tabelle kann mit sehr vielen Einträgen gefüllt ein, 100 können es locker werden. Alle sollen sich schön anstellen, so dass, immer nur 5 gleichzeitig laufen.
Am liebsten wäre mir eine SQL Anweisung, die mit den Startzeitpunkt für den neu einzufügenden Datensatz ausgibt.
Werbung
22.07.2010
18:44 von
TBT
hab es jetzt doch mit eine SQL Anweisung und anschließendem PHP Code gelöst,
also: erst die 5 Einträge mit höchsten Fertigstellungsdatum holen,
und davon danach in PHP das kleinste Datum raussuchen.
Da fällt mir gerade ein, mit einem Subselect könnte dies gehen, aber ob dies dann performanter ist? Ich muss das mal testen.
also: erst die 5 Einträge mit höchsten Fertigstellungsdatum holen,
und davon danach in PHP das kleinste Datum raussuchen.
Da fällt mir gerade ein, mit einem Subselect könnte dies gehen, aber ob dies dann performanter ist? Ich muss das mal testen.