SQL Eintrag mit maximalem Datum

Vacca

Cadet 4th Year
Registriert
Apr. 2007
Beiträge
78
Hallo Leute,

trotz recht guter SQL-Kenntnisse möchte ich um etwas Hilfe bitten. Stellt Euch eine Tabelle "hist" vor, der der zu Maschinen Ereignisse gespeichert sind. Also etwa in dem Stil:

Code:
id 	nr 	datum 		typ 		beschr 	
1 	109 	1957-07-30 	Standort 	A
2 	109 	1957-09-21 	Standort 	B
3 	109 	1970-05-31 	Standort 	A
137 	109 	2008-08-06 	Verlängerung 1 	Schmitz, gültig bis 06.08.2009
363 	109 	2009-07-29 	Verlängerung 2 	Müller, gültig bis 29.07.2010 
619 	109 	2010-07-29 	Verlängerung 3 	Schmitz, gültig bis 25.09.2010

Die Maschine 109 hat also u.a. 3 mal den Standort gewechselt und dann 3 mal eine Einsatzverlängerung bekommen. In der Tabelle sind natürlich auch noch andere Maschinen vorhanden. Es ist auch möglich, daß zu einer Maschine nur die 2. oder nur die 3. Verlängerung bekannt ist.

Nun möchte ich für jede Maschine die neueste Verlängerung abfragen, was mit dieser Abfrage geschieht:

Code:
                SELECT hist.nr, hist.datum, hist.typ, beschr
                FROM hist
                INNER JOIN (
                    SELECT nr, typ, Max( Datum ) AS max
                    FROM hist
                    WHERE typ LIKE 'Verlängerung%'
                    GROUP BY nr) AS t1 
                    ON hist.nr = t1.nr
                    AND hist.datum = t1.max
                    AND hist.typ = t1.typ

Das funktioniert aber nur, wenn nur maximal eine Verlängerung eingetragen ist. Wenn es 2 oder mehr sind, wird der Satz nicht gefunden.

Wie muß ich die Abfrage modifizieren?

Danke im Voraus! :)

Zum Gruß
Vacca
 
Hi Vacca,

laß doch mal bei Deinem INNER-JOIN-Select die Spalte TYP weg (nur aus dem Select, "where typ like..." muss bleiben!) und nimm diese auch aus den Join-Bedingungen ganz unten heraus.

Grüße
MistaJack
 
Vielen Dank! Schon die kleine Änderung war die Lösung.

Super! :)



Vacca
 
Zurück
Oben