Hallo liebes Forum ;-)
Gerade arbeite ich an einem System, welches die Vertretungspläne an meiner Schule verwalten können soll. Dazu gibt es in der MySQL Datenbank (Version 4.1, läuft auf Debian) eine Tabelle, welche für jeden vorhandenen Plan einen Eintrag enthält, das ganze sieht so aus:
id | datum | version
Prim. Key | DATE | INT 2
-----------+------------+-----------
1 | 2006-03-27 | 1
2 | 2006-03-27 | 2
3 | 2006-03-28 | 1
4 | 2006-03-29 | 1
5 | 2006-03-30 | 1
6 | 2006-03-30 | 2
Es gibt also immer einen Eintrag mit Versionsnummer 1, es kann aber beliebig viele weitere Einträge geben mit steigender Versionsnummer.
In einer zweiten Tabelle sind dann die Daten für die Pläne abgelegt - zu Zuordnung erfolgt über die ID des Planes, soviel nur am Rande.
Mit folgendem SQL Befehl hole ich mir den aktuellsten Plan für ein Datum:
SELECT id FROM tabelle WHERE datum = '2006-03-27' ORDER BY version DESC LIMIT 1
Das klappt auch einwandfrei - doch jetzt soll eine Übersicht erstellt werden, in der für jedes in der Datenbank vorhandene Datum ein Plan angezeigt werden soll, jedoch (logischerweise) immer nur der aktuellste, also der mit der höchsten Versionsnummer.
Wie kann ich das am geschicktesten lösen? Geht das überhaupt in einer SQL Abfrage?
So spontan fällt mir nur eine Sache ein: Per GROUP BY datum alle vorhandenen Datum auslesen und dann für jedes Datum einzeln einen SQL Query absetzen (wie oben). Doch geht es auch einfacher?
MfG, Dennis.