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.