PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mySQL - Zwei Felder aus der Zeile wo ein drittes Feld den max Wert der Spalte hat?



sticky bit
04-12-2002, 00:23
Also ich such verzweifelt nach der richtigen Formulierung für eine mySQL-Abfrage. Und zwar möchte ich aus einer Tabelle zwei Werte ziehen, und zwar in der Zeile wo ein dritter Wert der grösste der Spalte ist. Den grössten Wert einer Spalte bekommen ich ja mit MAX(Spalte) aber wie formulier ich nu ne Abfrage die mir zwei Felder aus der Zeile liefert wo das MAX(Spalte) zutrifft. Werd da irgendwie nicht schlau...

Christoph
05-12-2002, 08:36
Geht nicht mit mySQL, wohl aber mit jeder anderen Datenbank.
Lösung ist eine Subquery:

SELECT <feldliste> FROM <tabelle> WHERE <maxfeld> = (
SELECT max(maxfeld) FROM <tabelle>
);

jwebworks
05-12-2002, 12:59
SELECT feld1, feld2 FROM tabelle1, tabelle2 WHERE tabelle1.id = tabelle2.id AND tabell1.maxfeld = max(maxfeld);

oder nicht?

sticky bit
05-12-2002, 14:25
Original geschrieben von Christoph
Geht nicht mit mySQL, wohl aber mit jeder anderen Datenbank.
Mhh, das wirds wohl sein scheiss mySQL... Naja egal, habs jetzt mit SELECT `feld1`, `feld2` FROM `tabelle` ORDER BY `feld3` DESC LIMIT 1 gemacht. Gefällt mir zwar irgendwie nicht die Krücke, aber was solls, laufen muss es und wenn mySQL keine Subqueries kann...

@jwebworks: Wo kommt eigentlich bei dir die zweite Tabelle her? Hab ich mich vielleicht missverständlich ausgedrückt, das ganze findet nur in einer Tabelle statt...

jwebworks
13-12-2002, 11:46
ja, sorry :-)

ich dachte, damit wird es anschaulicher.

irgendwo in der mysql-doku hab ich mal gelesen,
dass man sub-selects immer durch joins ersetzen
kann und die diese deshalb nicht eingebaut hatten,
weil joins schneller sind als sub-sels.

die holen das aber mit den 4.x-er releases nach.

cu, stop.h