PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GROUP BY



baluff
19.09.2005, 16:19
Hallo Leute

ich experimentiere gerade mit Abfragen, welche mit GROUP BY sortiert sind. Dabei bringt MySQL Fehler in den Ergebnissen.

Nehmen wir z.B. an, ich sende folgende Abfrage an meinen MySQL-Server:

SELECT id, name, wert1, max(intwert2) FROM tabelle1 WHERE name='test' GROUP BY wert1;

dann bringt er mir zwar schön für jeden unterschiedlichen wert1 ein Resultat, aber teilweise mit der falschen id, was natülich tödlich ist ...

Weiss jemand, warum das so ist? Muss ich etwas in der Abfrage ändern?
Danke und Gruss
baluff

Mikes-PCHilfe
19.09.2005, 18:40
Hallo,

mit GROUP sortiert man nicht, sondern gruppiert, wie der Name schon sagt, in deinem Fall, fasst GROUP BY alle doppelten Werte von wert1 zusammen.

Das was du suchst ist:

SELECT id, name, wert1, max(intwert2) FROM tabelle1 WHERE name='test' ORDER BY wert1 ASC;

Gruß Mike

baluff
19.09.2005, 18:50
Ok, sortieren ist vielleicht das falsche Wort.

Ich will jeweils den höchsten Wert einer Gruppe von Daten herauslesen. Nehmen wir an, in der Tabelle sind drei verschiedene Temperaturmessungen für jeweils 4 Tempsensoren gespeichert. Die Sensoren sind in der Spalte 'wert1' bezeichnet, die gemessenen Temperaturen in Spalte 'intwert2'.

Jetzt möchte ich die höchste gemessene Temperatur für jeden Sensor herauslesen. Das sollte doch mit MAX() und GROUP BY gehen, oder?

Danke und Gruss
baluff

Mikes-PCHilfe
20.09.2005, 14:03
Das wäre dann:

SELECT id, name, wert1, intwert2 FROM tabelle1 WHERE name='test' ORDER BY intwert2 DSC GROUP BY wert1;

Denke das sollte klappen, nicht getestet

baluff
20.09.2005, 14:25
ORDER BY und GROUP BY frisst er mir nicht in der gleichen SELECT-Klausel :(

Mikes-PCHilfe
20.09.2005, 15:54
Du hast recht, auf MySQL 4.0 ist das so.
Kann das aber morgen abend mal auf MySQL 4.1 testen

GRuß Mike