Philipp Hasenfratz: Group by funktioniert nicht

Beitrag lesen

Halihallo Bine

.. ja ich benutze MySQL, desewgen hab ich den Fehler auch nicht gleich entdeckt.

Version?

keine Agregatsfunktionen? Wie kann ich das ganze ohne MAX() machen?

Eben nicht.

Wenn ich nach einem anderen Wert gruppiere, dann erhalte ich immer 2 Datensätze.

Rate nicht, wisse!

Erstens brauchst du ein vernünftiges Datenschema, denn deines ist
m.E. Schrott:

Entweder du hast einen Primary Key, dann ist der Name 'tbl_..._id'
irreführend und somit schlecht,
oder du hast keinen Primary Key und dann ist das Datenbankschema
Schrott und nicht sinnvoll zu verwenden.

Jeder Datensatz muss eineindeutig ansprechbar sein => Primary Key.
Ansonsten hast du keine Relation, sondern eine Tabelle und hättest
absolut keine Chance dieses Problem zu lösen (zumindest sehe ich
keine [gute]).

Also:
tbl_100_00

id           PRIMARY KEY, z.B. als AUTOINC
tbl_old_id   das ist die tbl_100_00_id.
wcost
wtsc

Möglichkeit 1:
MySQL>4.x:

SELECT tbl_old_id, wcost, wtsc
FROM tbl_100_00
WHERE
  id IN (
    SELECT id
    FROM tbl_100_00
    WHERE tbl_old_id=22
    GROUP BY wtsc DESC
    LIMIT 1
  )

Möglichkeit 2:
MySQL<4.x:

SELECT a1.tbl_old_id, a1.wtsc, MAX(a2.wcost)
FROM tbl_100_00 AS a1, tbl_100_00 AS a2
WHERE
  a1.id=a2.id AND
  a1.tbl_old_id=22 AND
GROUP BY a1.wtsc DESC
LIMIT 1

oder so ähnlich. Ohne Subselects ist das Leben schwer... Beachte,
dass dies keine gute Lösung ist, da es - wie Cheatah sagt - mehrere
Maximas geben kann und diese dann aussen vor gelassen werden.

Möglichkeit 3: zwei queries.

Tipp: Befasse dich mit relationaler Algebra und mache dich mit diesem
Denken vertraut.

Viele Grüsse

Philipp

--
M$: Patches - don't.