[MySQL 3.23] Left Join mit (unmöglicher?) On-Klausel

Ceppi

Erfahrenes Mitglied
Hallo Tutorianer,

heute habe ich mal wieder selbst einen Query, bei dem ich nicht weiter weiß...


Mein Problem:
Ich habe eine Benutzertabelle User, deren Inhalt ich ausgeben möchte. Mit dieser ist die Tabelle Archiv über die UserID verknüpft, die mehrere Datensätze pro Benutzer enthalten kann.
Darin wird auch das Eintragungsdatum des Datensatzes mit einem Timestamp gespeichert.

Nun soll stets der aktuellste Datensatz pro User aus Archiv mit Left Join dem User-Resultat hinzugefügt werden, aber wie stellt man das an?

Vereinfachte Tabellenstruktur:
Code:
Tabelle User:
id | name

Tabelle Archiv:
id | userId | datum

Ceppi
 
Das geht mit einer Erweiterung von Toms Query.
Ungetestetes Beispiel:
SQL:
select 
  user.id as userId,
  user.name as userName,
  a1.id as archivId,
  a1.datum as archivDatum
from user
left join archiv a1
  on user.id = a1.userId
left join archiv a2
  on user.id = a2.userId
    and a2.datum>a1.datum
where a2.id is null
order by userName
 
Vielen Dank hpvw,

damit lässt sich mein Problem umgehen, auch wenn die Performance so ziemlich in den Keller gefallen ist;)

Ceppi
 
Zurück