lulu: MySQL - Ideen für kniffliges SELECT gesucht

Beitrag lesen

Guten Morgen

gibt es für folgende Aufgabenstellung eine einfache MySQL Lösung?

Es soll in einem kleinen WCMS eine Liste der zuletzt bearbeiteten Datensätze angezeigt werden.

Bei jedem Speichern eines Datensatzes wird u.a. die entsprechende ID dieses Datensatzes, die ID der zugehörigen Tabelle und der Zeitstempel in einer Logtabelle gespeichert.

Diese sieht (vereinfacht) so aus:

id int(8), table_id int(8), record_id int(8), ts timestamp(14)

Die Daten sehen also z.B. so aus

id, table_id, record_id, ts

11, 1, 1, 20040419120000
12, 1, 1, 20040418120000
13, 2, 1, 20040419110000
14, 3, 1, 20040419140000
15, 1, 2, 20040419150000
16, 2, 1, 20040418110000

(11+12 sowie 13+16 bezeichenen jeweils den selben Datensatz nur zu unterschiedlichen Zeiten gespeichert)

Die Liste der Datensätze nach Zeitpunkt absteigend geordnet wäre also

15, 14, 11, 13, 12, 16

Die Liste der letzten Datensätze müsste also wie folgt aussehen

15, 14, 11, 13

(12 und 16 werden nicht aufgeführt, da keine Datensätze doppelt angezeigt werden sollen)

Soweit so einfach.

Versucht habe ich diverse Konstrukte mit DISTINCT, GROUP BY und HAVING, allerdings habe ich bisher keine Lösung hinbekommen.

Das im Artikel von Daniela http://aktuell.de.selfhtml.org/tippstricks/datenbanken/having/index.htm

geschilderte Problem/ Aufgabenstellung hört sich ähnlich an.
Ich konnte das aber bisher nicht an mein Problem anpassen.

Evtl. kommt das kniffelige daher, dass zur eindeutigen Identifizierung hier zwei Spalten herangezogen werden müssen (table_id und record_id).
Ich hatte da sogar schon daran gedacht per

concat(table_id,' ',record_id) AS dummy,

eine String als quasi-ID zusammenzubauen.
Abgesehen davon, dass das eine sehr hässliche Konstruktion ist, habe ich auch damit keine Lösung gefunden.

Danke für Eure Hilfe/ Tipps
und Viele Grüße

lulu

--
bythewaythewebsuxgoofflineandenjoytheday