Select von max(price) mit ausgabe der id ?

EriFo

Erfahrenes Mitglied
Moin

Ich hab da mal eine kleine frage:

wieso spuckt mir

"select id, price as p from mangas having p=min(price);"

die id mit dem kleinsten Preis aus aber

"select id, price as p from mangas having p=max(price);"

verweigert den Dienst ?
Ich habs auch allgemein irgendwie nicht geschafft zum maximalsten Preis die ID mit ausgeben zu lasssen.

Kann mir jemand einen Tipp geben was ich vergessen habe. Die Seite von MySQL bzw. die Erklärungen zu SELECT bringen mich da nicht wirklich weiter.

Wollt das eigentlich in einer Abfrage erledigen und nicht 2 hintereinander schalten wo ich dann speziel nochmal nach dem Eintag mit dem max. Preis suchen lasse.

M.f.G. Erik
 
Code:
SELCET MAX(price) AS Maximalwert, MIN(price) AS Minimalwert FROM mangas;
Mit MIN() und MAX() suchst du ja nach einem Minimalwert, bzw. einem Maximalwert von selektierten Datensätzen. Du hast beispielsweise 10 Datensätze in denen das Feld "Name" immer gleich ist. Und dann das Feld "Schulnote", welches unterschiedliche Zahlen beinhaltet. Jetzt Selektierst du die Datensätze mit diesem Namen und machst noch ein "GROUP BY". Und dann kannst du dir von diesen 10 selektierten Datensätzen den Minimal- bzw. Maximalwert ausgeben lassen.

Bei dem was du vorhast kannst du einfach mit dem SQL Befehl, den ich gepostet habe, den Minimal- und Maximalwert ermitteln und danach dazu die ID raussuchen.
 
Zuletzt bearbeitet:
Danke für die rasche Antwort. Wie ich mir Min und Max-Werte geben lasse weis ich.
Mein Problem ist , dass ich 230 verschiedene Datensätze habe mit mit verschiedenen Titeln und ich wollte mir nun einfach per SQL die Infos (Titel, Id, sonstewas) mit einer Abfrage geben lassen (auch nur aus rein estetischen Gründen - nichts lebenswichtiges).

Das mir quasie das Select nicht nur rein den Extremwert liefert sondern noch Titel ect.

Ich habs aber nur geschaft das er mir dann das für alle Titel die gleich sind raussucht und auflistet mit den verschiedenen Maximalwerten halt bzw klapts.

Ich habs halt komischer weise mit "select id, price as p from mangas having p=min(price);" geschafft mit zum Minimum auch die ID asgeben zu lasse (zugegebenermasse durch rumprobieren als duch gezieltes versuchen) - aber das klappt nicht mit Max(price) - da liefert das nur leere Abfragen.

M.f.G. Erik
 
Das liefert leere Ergebnisse, weil es scheinbar alles unterschiedliche Artikel sind. Und wenn du 230 unterschiedliche Titel hast, kannst du davon nicht einfach einen Maximalwert ermitteln.
Einen Maximalwert kannst du ja nur ermitteln, wenn du eine Gruppe von Datensätzen hast.
Z.B. den Maximalwert (höchsten Preis) aller Artikel in den Kategorie "Festplatten".
Um den höchsten Wert zu selektieren musst du die Datensätze zuerst gruppieren also ein "GROUP BY" verwenden. Und das wiederum setzt voraus, dass du eine Spalte hast, nach der du die 230 Datensätze gruppieren kannst. Zur Not machst du dir einfach eine Pseudospalte in die Tabelle. In der Spalte bekommen jetzt alle 230 Titel den gleichen Wert (z.B. "1"). Dann gruppierst du die Datensätze nach dieser Spalte und schon kannst du den Maximalwert ermitteln.
 
Ahh - vielen Dank ^^
So oder ähnlich werd ichs dann wohl machen müssen. ^.^
M.f.G Erik
 
Zurück