Mailinglisten-Archive |
>From: Thilo Haas <haas at haas-media.de>
>Reply-To: mysql-de at lists.4t2.com
>To: <mysql-de at lists.4t2.com>
>Subject: HAVING (a) Problem :-)
>Date: Mon, 10 Mar 2003 14:17:27 +0100
>
>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
>
AW:
Hi , Thilo
Versuche mal:
SELECT id,grp,MAX(id) FROM t GROUP BY grp:
MfG, Guido
_________________________________________________________________
Fotos - MSN Fotos das virtuelle Fotoalbum. Allen Freunden zeigen oder
einfach online entwickeln lassen:
http://photos.msn.de/support/worldwide.aspx
--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive