phpbar.de logo

Mailinglisten-Archive

HAVING (a) Problem :-)

HAVING (a) Problem :-)

Thilo Haas haas at haas-media.de
Mon Mar 10 14:17:27 CET 2003


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 


php::bar PHP Wiki   -   Listenarchive