[SQL] Gleiche Spalten, Maximaler Timestamp

chriss_2oo4

Erfahrenes Mitglied
Hi,

ich bin mir fast sicher soetwas schon mal gemacht zu haben, ich weiss nur nicht mehr genau wie -> ich glaub ich hab zwei SQL-Abfragen zusammengesetzt Mein Problem:

Ich habe folgende Tabellenstruktur:

ID, Username, Computername, ApplicationName, ApplicationVersion, Date, Val

Nun gibt es einige Einträge, die sich nur in Version und Zeitstempel unterscheiden:

1, Mustermann, PC1, App1, 1.00, 01.01.08 1
2, Mustermann, PC1, App1, 1.01, 02.01.08 1
3, Mustermann, PC1, App1, 1.02, 03.01.08 1

Nun Suche ich einen Befehl der mir die alle Benutzer auflistetet die eine bestimmte Version (z. B. 1.01) haben. Dabei ist aber zu beachten, dass nur die aktuellste Version, also die mit dem neuesten Datum, berücksichtigt werden soll.


PS
Ich weiß, dass man eine Datenbank nicht so aufbaut -> kann leider nix dafür ist schon fertig... muss diese nur auslesen.

Lg Chriss
 
Hi,

GROUP BY fasst doch alle Einträge zusammen, die in den angegebenen Spalten den selben Inhalt haben?

Die gesuchten Spalten unterscheiden sich nicht in Computername, Username, ApplicationName -> lediglich die ID, Date und ApplicationVersion

Bisher hab ich folgendes Statement verwendet, funktioniert aber leider nicht:

SELECT UserName FROM MyTable WHERE Item="Gewünschte Version" GROUP BY ComputerName, ApplicationName, UserName HAVING MAX(Date)

Weil ich glaube dass man nach MAX(Date) noch eine Bedinung anbrigen muss, z. B.: HAVING MAX(Date) > TimeDate.Now

Lg Chriss
 
Hi,

eher so:

Code:
SELECT UserName, MAX(Date) FROM MyTable 
   WHERE Item="Gewünschte Version" 
   GROUP BY ComputerName, ApplicationName, UserName

Wie sieht's dann aus?

LG
 
Hi,

erstmal Danke für deine Antworten, aber ich glaube

SELECT UserName, MAX(Date) FROM MyTable
WHERE Item="Gewünschte Version"
GROUP BY ComputerName, ApplicationName, UserName

selektiert halt für jeden Treffer das MAX(Date) und nicht nur die Spalte mit dem MAX Date.
Probier es aber heute Mittag noch aus.

Lg Chriss
 
Zurück