n'abend,
select
name
,condition
, max(inserted
),value
fromconfig
group byname
,condition
zum Ersten wird das nicht funktionieren. Zum zweiten würde das (wie Dennis bereits erkannt hat) nicht funktionieren wie erwartet.
Du gruppierst nach name
und condition
. Wählst eine Aggregat-Funktion (nämlich MAX()), um den höchsten Wert für inserted
zu ermitteln. Aber was machst du denn mit value
? _welcher_ Value soll denn da kommen? Der value des Datensatzes mit dem größten Sch..z? Genau! - nicht identifizierbar -> Problem. Entweder jagst du value
ebenfalls durch eine Aggregat-Funktion (was in diesem Fall null Sinn macht, da du einen bestimmten Wert haben möchtest), oder du gruppierst nach dieser Spalte (was mindestens noch weniger Sinn macht), oder du wirfst die Spalte da raus.
Weiter benutzt du MAX(inserted
) auf eine Art, die dir definitiv nicht das Ergebnis liefert, das du haben möchtest. Was bekommst du? Genau! - das größte Datum einer jeden (name, condition) Gruppe. Was bekommst du nicht? Genau! - den Datensatz mit dem höchsten Datum einer jeden (name, condition) Gruppe.
Ilja lieferte bereits eine Lösung, welche auf [korrelierenden] SubQueries (ab MySQL4.1) setzt.
Korrelierende SubQueries sind im Endeffekt Unterabfragen, die in Abhängigkeit der äußeren Abfrage laufen. Korrelierend bedeutet hier also, dass für jede (name, condition) Gruppe die Query erneut ausgeführt werden muss. (Was zu Performanceproblemen führen kann, wenn oft auf die DB gefeuert)
weiterhin schönen abend...
Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|