den kleinsten wert von den x - grössten Werten rausfinden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • den kleinsten wert von den x - grössten Werten rausfinden

    Hi!

    Ich habe eine Datenbank, in der unter anderem in der Spalte "bewertung" ein Integer wert steht. Angenommen es sind 5 Datensätze da, und in der Spalte "bewertung" steht folgendes:
    1
    5
    3
    8
    6
    Bei der Abfrage:
    PHP-Code:
    $query "SELECT MIN(bewertung) from tabelle" 
    bekomme ich den kleinsten dieser 5, also als ergebnis "1".
    Jetzt möchte ich allerdings nur die 3 grössten betrachten, und von denen den kleinsten Wert rausfinden. Bei dem obigen Beispiel sind die 3 grössten "5, 6, 8", also möchte ich "5" als ergebnis haben
    Mit anderen Worten möchte ich den dritt - grössten Wert rauskriegen.

    Angenommen die Tabelle sieht so aus:
    1
    5
    Wenn z.B nur 2 Datensätze in der Tabelle sind, soll der dritt - grösste dann der kleinste Wert der Tabelle sein, also hier 1.

    Wie sieht eine solche abfrage aus?

    In wirklichkeit möchte ich von den 300 grössten den kleinsten Wert herausfinden, und das in einer Tabelle die theoretisch zig Tausend Datensätze haben kann.
    Von daher habe ich performance - bedenken, wenn ich mir einfach die 300 grössten der Tabelle ausgeben lasse (mit ORDER BY und LIMIT), und dann in php daraus den kleinsten ermittele. Oder ist der Gedanke quatsch?

    Mfg,
    Stefan

  • #2
    ... ORDER BY zahlen DESC LIMIT 3

    und dann die werte via php in ein array laden.

    das letzte element des arrays ist dein gewünschter wert.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      da warst du aber unachtsam, haxe.

      warum 8 und 6 rausholen, obwohl nicht benötigt.
      LIMIT x,1 should work.

      Kommentar


      • #4
        wenn ich das richtig gelesen habe, was er will, ist es richtig, was ich geschrieben habe!

        bekomme ich den kleinsten dieser 5, also als ergebnis "1".
        Jetzt möchte ich allerdings nur die 3 grössten betrachten, und von denen den kleinsten Wert rausfinden. Bei dem obigen Beispiel sind die 3 grössten "5, 6, 8", also möchte ich "5" als ergebnis haben
        Mit anderen Worten möchte ich den dritt - grössten Wert rauskriegen.

        Angenommen die Tabelle sieht so aus:
        1
        5
        Wenn z.B nur 2 Datensätze in der Tabelle sind, soll der dritt - grösste dann der kleinste Wert der Tabelle sein, also hier 1.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Wenn der fall < 3 Datensätze in der Tabelle tatschlich möglich ist, muss man wohl den umweg über PHP gehen.

          Kommentar


          • #6
            sag ich doch...
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar

            Lädt...
            X