Hallo Leute,
ich war länger nicht mehr in Access unterwegs und habe mangels Routine viel vergessen. Ich habe - vereinfacht - zwei Tabellen:
tbl1_Kunden mit den Textfeldern Referenz (Primary) und Name (Text). Weitere Basisdaten des Kunden sollen hier keine Rolle spielen.
Referenz Name
KD001 Meier
KD002 Schulze
KD003 Peters
tbl2_Status soll nun die Möglichkeit bieten, nacheinander Statusveränderungen zu erfassen, und zwar mit ÄnderungsID (Autowert), Referenz und Status, also
ÄnderungsID Referenz Status
1 KD001 Aktiv
2 KD002 Aktiv
3 KD003 Aktiv
4 KD002 ruhend
5 KD001 hyperaktiv
6 KD002 wieder da
Ihr ahnt vielleicht, was ich möchte: Eine Query mit den Kundendaten und dahinter den letzten Status.
Mir ist auch klar, dass ich von der tbl2 das Referenzfeld gruppieren muss als weiteres Feld die ID mit MAX() nehmen muss. Aber wie bastele ich die Statusbezeichnung dieser letzten ID an die Stammdaten?
Vielen Dank im voraus
hajott
Schau dir mal meinen Text zur Darstellung von aggregierten Daten (https://codekabinett.com/rdumps.php?Lang=1&targetDoc=abfrage-1-zu-n-aggregatfunktion-letzter-datensatz) an. Insbesondere der zweite Teil sollte zu deinen Anforderungen passen.
Und, als PK ist der Datentyp "Text" nicht so gut geeignet, nimm besser Zahl
(LongInteger, -> AutoWert). Die Anzeige von "KDnnnn" kannst du über eine
Abfrage realisieren.
Hallo,
und nochmal "und":
Den inkrementellen Autowert als Kriterium für einen zeitlichen Ablauf heranzuziehen, kann zu Fehlergebnissen führen. Ein Datumsfeld ist dafür besser geeignet.
Für die Lösung (zu dieser Aufgabe) muss auch nicht unbedingt gruppiert werden:
SELECT S.Referenz, S.Status
FROM tbl2_Status As S
WHERE S.ÄnderungsID=(Select Max(ÄnderungsID) From tbl2_Status as M Where M.Referenz = S.Referenz )