URL: https://www.overclockers.at/coding-stuff/mysql_max_von_mehreren_spalten_131936/page_1 - zur Vollversion wechseln!
ich habe mehrere spalten, a, b, c, usw. und eine spalte für die zeit. nun würde ich gerne von jeder spalte den max()-wert mit zugehörigem zeit-wert abfragen. ist das in einem query möglich? oder muß ich für jede spalte eine eigene abfrage machen?
beim schreiben ist mir jetzt eine idee gekömmen, könnte sie funzen?
SELECT a, b, c, zeit FROM tabelle WHERE max(a) OR max(b) OR max(c) ORDER BY a, b, c
tia
MIK
hast du's mit HAVING schon probiert?
having ist ja nix anderes als where, nur daß es nicht optimiert wird. und erst ganz am schluß einzusetzen.
edit: die idee funzt nicht. kommt folgende fehlermeldung:
Falsche Verwendung der GROUP-Funktion
dh. du möchest alle zeilen haben die einen(oder auch mehrere) maxwert(e) beherbergen?
@having: having ohne group by wird nicht funktionieren... having ist zwar wie eine where bedingung aber nur auf zuvor gruppierte elemente.
solltest du eine subselectdb haben (neueste mysql sollten das packen)
dann:
select a,b,c
from table
where a= (select max(a) from table) or b=(select max(b) from table)....
grüsse
ich möchte den max-wert jeder einzelnen spalte (nicht zeile) haben und den jeweils zugehörigen timestamp (ist in einer weiteren spalte gespeichert)
Zitat von kleinerChemikeroder muß ich für jede spalte eine eigene abfrage machen?
naja, macht wohl nicht wirklich sinn. wollte versuchen querys zu sparen um das ganze eine spur schneller und resourcenfreundlicher zu machen.
hätte dann halt ne zeile für jeden maxwert gerne gehabt. aber egal, mach ich halt eigene querys.
thx
hrmpf
neues problem. mein query sieht nun so aus:
SELECT max(clients) AS clients, zeit FROM sstatus ORDER BY zeit DESC LIMIT 1
allerdings spuckt mysql dabei folgenden fehler aus:
Das Vermischen von GROUP Spalten (MIN(),MAX(),COUNT()...) mit Nicht-GROUP Spalten ist nicht erlaubt, sofern keine GROUP BY Klausel vorhanden ist.
ein einfügen von 'GROUP BY zeit' läßt das ganze funktionieren, aber nicht mit dem gewünschten ziel. nun erhalte ich nicht den maximalwert aller spalten sondern scheinbar den letzten eintrag (= der mit dem höchsten timestamp)
MIK
edit:
man bin ich blöd. hab viel zu kompliziert gedacht. ein einfaches 'SELECT clients, zeit FROM sstatus ORDER BY clients DESC, zeit DESC LIMIT 1' tuts auch 
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025