[Access] Nur neuste Einträge

derdackel

Grünschnabel
Hallo,
ich stehe vor einem Problem:

Ich habe eine Tabelle (Bewertung) mit folgenden Spalten:
id, PersNr, Von, Bis [...] (der rest ist erstmal nciht relevant)

Bei PersNr (Personalnummer) taucht mehrmals der selbe Wert auf, wobei Von und Bis (jeweils Datumswerte) natürlich immer anderes sind. Nun muss ich zu jeder Personalnummer die aktuellste Bewertung ausgeben, die älteren bewertungen sollen nicht ausgegeben werden.

Ich komme einfach nicht darauf wie ich das anstellen soll, kann mir jemand helfen?
 
Nun, Acces s ist leider in Sachen SQL sehr schwach. Einen direkten Weg ist da sehr schwer.
Am einfachsten und verständlichsten ist es wohl mit 2 Abfragen

Ich gehe jetzt mal davon aus, dass du den Eintrag mit dem grössten bis-Eintrag wilst

Abfrage1 sucht pro PersNr das höchste bis-Datum:
BEWERTUNG_MAX_OF_BIS
SQL:
SELECT PersNr, Max(bis) AS MaxOfbis
FROM bewertung
GROUP BY bewertung.PersNr;

Die 2te Abfrage sucht in bewertung nun nur die Datensätze aus, die in der ersten Abfrage angezeigt werden.
SQL:
SELECT b.*
FROM bewertung AS b
	INNER JOIN BEWERTUNG_MAX_OF_BIS AS maxBis
		ON (b.PersNr=maxBis.PersNr) AND (b.bis=maxBis.MaxOfbis);
 
Zuletzt bearbeitet von einem Moderator:
Moin yaslaw,

aber es würde doch auch bei Access (von dem ich sicherlich keine höhere Meinung habe als du) auch ein (einziges) Statement mit einem Subselect gehen

Ungetestete Skizze:
SQL:
SELECT b.*
FROM bewertung AS b, 
(SELECT PersNr, Max(bis) AS MaxOfbis
   FROM bewertung
   GROUP BY bewertung.PersNr) AS maxBis
WHERE   b.PersNr=maxBis.PersNr AND b.bis=maxBis.MaxOfbis;

Grüße
Biber
 
Zuletzt bearbeitet von einem Moderator:
@Biber2
Habs grad mit Access 2007 getestet. Es geht!
Hm.. meine letzten grossen Access-Projekte waren noch mit 97 und 2000. Un da hab ich das nie probiert, weils in der Anleitung nirgens stand...
 
Zurück