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