Hallo Markus,
In kunden_main gibt es folgende Felder:
km_id
km_vorname
km_name
...In kunden_status gibt es folgende Felder:
ks_id
ks_km_id (Die ID aus kunden_main / Fremschlüssel)
ks_status
ks_datum (Datum, wann der Status gesetzt wurde)
Nun möchte ich auf dem Bildschirm eine Liste mit allen Kundendaten ausgeben + den jeweils aktuellen Status (ID, Vorname, Name, Status, Datum).
Die Datenbankabfrage zum Erstellen der Liste möchte ich gerne ohne Schleife ausführen. Das heißt kunden_main und kunden_status sollen mit einem SELECT Befehl ausgelesen werden (JOIN). Funktioniert auch wunderbar, aber leider zeigt er mir für jeden Eintrag in kunden_status einen Datensatz an und nicht nur für den aktuellsten.
Du benötigst eine korrelierte Unterabfrage, sprich Deine MySQL-Version sollte >= 4.1 sein. Deswegen ist es bei MySQL-Fragen immer eine gute Idee, die Version mitanzugeben. Folgendes ungetestetes Statement sollte es tun:
SELECT
k.km_id,
k.km_vorname,
-- ...
s.ks_status,
s.ks_datum
FROM kunden_main k
INNER JOIN kunden_status ks
ON k.km_id = s.ks_km_id
WHERE s.ks_datum = (SELECT MAX(ks_datum) FROM kunden_status ks WHERE ks.ks_km_id = s.ks_km_id)
Ist Deine Version älter, so kann Dir vielleicht folgender Archivthread weiterhelfen.
Freundliche Grüße
Vinzenz