Bestimmten Wert mit MAX aus Datenbank auslesen

Sp33dy G0nz4l3s

Grünschnabel
Hallo,

ich habe ein Problem mit dem Auslesen von Daten bei dem ich absolut nicht mehr weiter weiß.

Bei der Abfrage werden zwei Tabellen miteinander verbunden.

Einmal die Tabelle kunden in der Daten über den Kunden drinstehen und eine Tabelle createdbackups, in der die Backups drinstehen die von dem Kunden Webspace Erfolgreich/Nicht erfolgreich gemacht wurden.

Tabelle 1: kunden

Spalte 1: id
Spalte 2: name
...

Tabelle 2: createdbackups

Spalte 1: customerID
Spalte 2: error
Spalte 3: timestamp

Nun will ich von diesen ganzen Zeilen mit den Backups immer nur das Datum (timestamp) angezeigt bekommen, das am neusten ist. Dies hat auch wunderbar mit MAX() funktioniert. Nun will ich aber ebenfalls von der Tabelle createdbackups zu dem jeweiligen maximalen timestamp die error Meldung angezeigt bekommen, die zu diesem Datum gehört.

So weit bin ich mit meinem Code gekommen, jedoch wird da noch nicht die richtige error Meldung dazu angezeigt der Rest funktioniert:
Code:
SELECT k.id, k.name, k.domain, c.error, UNIX_TIMESTAMP( MAX( c.timestamp ) ) AS 'timestamp'
FROM kunden k
INNER JOIN createdbackups c ON k.id = c.customerID
GROUP BY k.id
ORDER BY 1 ASC

Habt ihr eine Idee wie ich dieses Problem lösen kann? Ich hoffe sehr, das mir jemand helfen kann.

Schöne Grüße,
Marc
 

Anhänge

  • 1.jpg
    1.jpg
    46 KB · Aufrufe: 26
  • 2.jpg
    2.jpg
    75,1 KB · Aufrufe: 20
Hallo,

das kannst du nicht über ein einfaches Grouping erreichen. Du kannst es bspw. so lösen:

SQL:
SELECT k.id,
       k.name, 
       c.error, 
       UNIX_TIMESTAMP( c.created ) AS 'timestamp'
  FROM kunden k
 INNER JOIN createdbackups c ON k.id = c.customerID
 WHERE c.created=
    (select MAX(c2.created)  
       from createdbackups c2  
      where c2.customerid = c.customerid);

Markus
 
Zuletzt bearbeitet:
Zurück