Meokio: Select höchster wert (ASC) von 10 Kategorien

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

  1. 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

  2. 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.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
    Denn wer 'ne Blacklist hat, muss halt daran denken, dass er manches nicht sieht... und vor dem posten die Realitaet einschalten. (Christian Kruse)