Mailinglisten-Archive |
Hallo Thilo, davon ausgehend, daß mysql diesen Konstrukt unterstützt müßte die Lösung lauten: SELECT min(id), grp, d FROM ( SELECT grp, d FROM t GROUP BY grp ) maxtab, t WHERE maxtab.grp = t.grp AND maxtab.d = t.d GROUP BY grp, d Innerhalb einer Satzgruppe für gleiche Werte von GRP wird der größte Wert von D ermittelt. Anschließend wird für den ermittelten Wert von D und dem zugehörigen Wert von GRP die passende ID ermittelt. Wenn innerhalb der Wertegruppe ( GRP, D ) mehrere Werte für ID vorkommen wird der kleinste Wert von ID genommen. Isses das, was Du wolltest ? Beste grüße aus Mainz, Hans-Jürgen Schwarzer > -----Ursprüngliche Nachricht----- > Von: Thilo Haas [mailto:haas at haas-media.de] > Gesendet: Montag, 10. März 2003 14:17 > An: mysql-de at lists.4t2.com > Betreff: HAVING (a) Problem :-) > > > Hallo Liste, > ich möchte aus einer recht umfangreichen Tabelle jeweils den > Datensatz bekommen, der in einem Feld den höchsten Wert hat. Dabei > bin ich auf ein Problem gestossen: > > Die in meinem gesunden SQL Halbwissen zusammengestellte Abfrage > > SELECT id,grp,d FROM t GROUP BY grp HAVING d=max(d) ORDER BY id > > scheint nicht das gewünschte Ergebnis zu liefern. > > Hier mal meine Testdaten: > > > CREATE TABLE t ( > id varchar(32) NOT NULL default '', > grp varchar(255) NOT NULL default '', > d double NOT NULL default '0', > PRIMARY KEY (id) > ) TYPE=MyISAM; > > # > # Daten für Tabelle `t` > # > > INSERT INTO t VALUES ('1', '1', '55'); > INSERT INTO t VALUES ('2', '2', '35.2'); > INSERT INTO t VALUES ('3', '1', '77'); > INSERT INTO t VALUES ('4', '2', '23.1'); > INSERT INTO t VALUES ('5', '3', '60.2'); > > Ich habe nun folgende Abfrage: > SELECT id,grp,d FROM t GROUP BY grp HAVING d=max(d) ORDER BY id > > Als Ergebnis habe ich folgendes erwartet: > > id grp d > ----------- > 3 1 77 > 2 2 35.2 > 5 3 60.2 > > Herausgekommen ist aber: > id grp d > ----------- > 2 2 35.2 > 5 3 60.2 > > Es funktioniert immer solange der höchste Wert der erste in der > Tabelle ist > ... > > Mache ich da einen grundsätzlichen Denkfehler, oder kann man das Problem > auch anders lösen? > > Mit freundlichen Grüssen > > Thilo Haas > > -- > Haas Media GmbH | Phone +49(0)511 27038-70 > Agentur für moderne Medien | Fax +49(0)511 27038-69 > Hindenburgstrasse 38 | Web http://www.haas-media.de/ > D-30175 Hannover | Mail haas at haas-media.de > > PGP-FP: 8C7C FD86 3A0B D4D9 3A73 1C8F 629D 60ED BDE9 2B48 > > -- > Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter > -->> http://www.4t2.com/mysql > -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive