Select höchster wert (ASC) von 10 Kategorien
Meokio
- datenbank
0 Martin Hölter0
Dennis
Hallo zusammen,
ich hoffe der Titel ist nicht alzu verwirrend.
Also, ich habe eine Datenbank mit folgenden Werten:
1|1
2|1
3|1
1|2
2|2
3|2
...
bis eben 3|10
nun möchte ich jeweils den höchsten wert (sprich 3|1, 3|2, 3|3, ...)
auslesen:
SELECT * FROM board ORDER BY FNr ASC LIMIT 0 , 1
Ich Ordne hiermit die werte von groß nach klein und selectiere davon den ersten (sprich den höchsten)
Nun aber, wie löse ich die obere Aufforderung ?
Danke im Voraus.
Meokio
Hi!
ich hoffe der Titel ist nicht alzu verwirrend.
Der Titel nciht, aber das komplette Posting...
Also, ich habe eine Datenbank mit folgenden Werten:
1|1
2|1
3|1
1|2
2|2
3|2
...
bis eben 3|10
ICh kann leider keinerlei Systematik erkennen, weiß aber auch nciht, ob dies von Bedeutung ist. Stehen in der DB wirklich die Strings"3|10" drin, oder ist dies ein Wertepaar?
nun möchte ich jeweils den höchsten wert (sprich 3|1, 3|2, 3|3, ...) auslesen:
Es gibt nur _einen_höchsten Wert, also was genau willst du auslesen?
SELECT * FROM board ORDER BY FNr ASC LIMIT 0 , 1
Ich Ordne hiermit die werte von groß nach klein und selectiere davon den ersten (sprich den höchsten)
Ja.
Nun aber, wie löse ich die obere Aufforderung ?
Welche?
Danke im Voraus.
kein Problem, aber bitte formulier dein Problem neu.
Gruß
Martin
Hi Meokio,
ich hoffe der Titel ist nicht alzu verwirrend.
Also, ich habe eine Datenbank mit folgenden Werten:1|1
2|1
3|1
1|2
2|2
3|2
...
bis eben 3|10
Stehen diese Informationen in einer Spalte oder in zwei Spalten? Du solltest sie auf jeden FAll in zwei Spalten schreiben und den Spaltentyp auch auf INT setzen.
nun möchte ich jeweils den höchsten wert (sprich 3|1, 3|2, 3|3, ...)
auslesen
Nur _den_ höchsten Wert, das wäre ja 3|10 - oder möchtest du auch alle Werte aus lesen, die mit 3 (oder eben der hier höchten vorhandenen Zahl) beginnen auslesen?
Nun aber, wie löse ich die obere Aufforderung ?
Wenn du die Werte in zwei Spalten stehen hast, müsste es gehen. Nennen wir die erste Spalte mal a und die zweite Spalte b.
Nun müssen wir erst mal herrausfinden, was die größte Zahl in a ist (im Beispiel oben ist es ja 3). Leider lässt sich hier nich einfach WHERE a = max(a) schreiben, so sinnvoll das auch aussehen mag - es ist es nicht.
Wenn du eine MySQL Version größer als 4 verwendest (oder war es > 4.1?) kannst du sub-selects benutzen, dann würde das so aussehen:
SELECT
foo,
bar
FROM
tabelle
WHERE
a = (SELECT
max(a)
FROM
tabelle
)
ORDER BY
b ASC
Hier wird jetzt zuerst die höchste in a vorhandene Zahl ausgelesen und nur die Einträge ausgegeben, welche diese Zahl in a stehen haben. Gleichzeitig sortieren wir noch direkt nach b.
Soweit zumindst mal die grundliegenden Überlegungen ;-)
MfG, Dennis.