Stephan: Die letzen 3 Einträge auslesen

Hallo,

kann mir jemand sagen, wie der SQL befehl lautet, um die letzten 3 anzuzeigen?

Bis jetzt fand ich im Archiv nur LIMIT 1,X damit kann man aber nur die ersten anzeigen lassen...

Danke schonmal

Stephan

PS: Ich habe die Datensätze nummeriert, falls es hilft...

  1. Hi,

    kann mir jemand sagen, wie der SQL befehl lautet, um die letzten 3 anzuzeigen?

    Bis jetzt fand ich im Archiv nur LIMIT 1,X damit kann man aber nur die ersten anzeigen lassen...

    stand es nicht schon in der Bibel, dass bei entsprechender Sortierung die Letzten die Ersten sein koennen?

    Gruss,
    Lude

    1. Hallo,

      wenn ich nun aber LIMIT 1,X ausführen lasse, holt er mir ja die ersten 3 aus der Datenbank. Dann kann ich die natürlich sortieren, ich will aber die letzten 3 (wirklich nur die) auslesen und anzeigen, das Projekt ist größer und es würde länger dauern, alles auszulesen...

      Danke schon jetzt

      Stephan

      1. ich verstehe die bibel auch immer nicht, aber man muss sie wohl sinnbildlich interpretieren, nicht mit den ersten anfagen, sondern mit den letzten drei...

        Ilja

        1. Hallo,

          ich habe es jetzt glaub ich:

          LIMIT 3 DESC

          Oder?

          Danke schonmal

          Stephan

          1. Hallo,

            LIMIT 3 DESC

            Oder?

            Nein. Erst absteigend nach Nummerierung sortieren, dann LIMIT.Z.B.:

            ORDER BY id DESC LIMIT 3

            Gruß, Jan

            1. Ah, OK, danke!

          2. Hallo Stephan,

            ich habe es jetzt glaub ich:

            LIMIT 3 DESC

            Oder?

            Sicherlich nicht! Das DESC gehört zur ORDER BY-Klausel.

            Die letzten 3 Einträge auszulesen ist doch nur sinnvoll, wenn du die Einträge auch irgendwonach sortierst. Jetzt änderst du einfach die Sortierungsreihenfolge, indem du

            ORDER BY ... ASC bzw.
            ORDER BY ...

            durch

            ORDER BY ... DESC

            ersetzt, bzw. umgekehrt.

            Lies auch noch mal http://www.mysql.com/doc/en/SELECT.html

            Schöne Grüße,

            Johannes

            --
            ss:| zu:} ls:[ fo:} de:] va:} ch:) sh:( n4:| rl:( br:< js:| ie:{ fl:( mo:}
            http://www.zeller-johannes.de/
            1. OK, Danke, has gerafft ;-)

              Stephan

          3. lass dich nicht verwirren. es gibt verschiedene wege, dein problem zu lösen welches du nimmst, hängt ein wenig von deinen vorgaben ab. grunsätzlich sind zwei dinge im spiel, group by und limit.

            group by sortiert die einzelnen datensätze (zeilen) der ergebnistabelle. dabei kannst du eine oder mehrere spalten angeben, die für die sortierung rangezogen werden und bestimmen, ob sie aufwärts (ASC standard) oder abwärts (DESC) sortiert werden, zum beispiel:

            SELECT vorname, nachname FROM mitglieder ORDER BY nachname ASC, wobei ASC standard ist, also weggelassen werden kann.

            mit LIMIT kannst du die anzahl der datensätze bestimmen, die ausgeben werden sollen und falls gewünscht, ab welchen datensatz er anfagen auszugeben. Der Limit Befehl hat also ein oder zwei Argumente, Beispiel:

            SELECT vorname, nachname FROM mitglieder ORDER BY nachname ASC LIMIT 5,3, wobei er hier bei den sechsten datensatz anfängt (0 ist der erste wenn ich mich nicht täuscbe) und insgesamt drei datensätze ausgibt.

            dieses beide konstrukte kannst du nun nehmen, indem du die sortierung der tabelle einfach umdrehst, also ORDER BY nachname DESC und dann mit LIMIT 3 oder LIMIT 0,3 die ersten drei, die eigentlich die letzten sind, ausgibst.Beispiel:

            SELECT vorname, nachname FROM mitglieder ORDER BY nachname DESC LIMIT 3 oder mit LIMIT 0,3

            Ilja

            1. Ah, Danke! Jetzt habe ich es verstanden...!

              Stephan

            2. Hallo Ilja,

              lass dich nicht verwirren. es gibt verschiedene wege, dein problem zu lösen welches du nimmst, hängt ein wenig von deinen vorgaben ab. grunsätzlich sind zwei dinge im spiel, group by und limit.

              group by sortiert die einzelnen datensätze (zeilen) der ergebnistabelle.

              Ich hoffe, dass du dich da nur verschrieben hast... ;-)

              Grüße,

              Johannes

              --
              ss:| zu:} ls:[ fo:} de:] va:} ch:) sh:( n4:| rl:( br:< js:| ie:{ fl:( mo:}
              http://www.zeller-johannes.de/
              1. rofl yo,

                group by sortiert die einzelnen datensätze (zeilen) der ergebnistabelle.

                Ich hoffe, dass du dich da nur verschrieben hast... ;-)

                well der wald und die bäume, ORDERB BY ;-)

                Ilja

  2. Hallo,

    kann mir jemand sagen, wie der SQL befehl lautet, um die letzten 3 anzuzeigen?
    Bis jetzt fand ich im Archiv nur LIMIT 1,X damit kann man aber nur die ersten anzeigen lassen...

    Ein Grund mehr, das englische Manual zu lesen:
    http://www.mysql.com/doc/en/SELECT.html

    To retrieve all rows from a certain offset up to the
    end of the result set, you can use some big number
    for the second parameter:
    SELECT * FROM table LIMIT 95,18446744073709551615; # Retrieve rows 96-last.

    Noch vor kurzem stand dort IIRC:
    SELECT * FROM table LIMIT 95,-1; # Retrieve rows 96-last.
    So steht's noch heute auf:
    http://www.webmaster2020.com/sql/select.html

    Ich weiss nicht, ob diese Syntax weiterhin gueltig ist,
    oder ob MySQL sie irgendwann rauswirft.

    HTH, Gruesse,

    Thomas

    1. Hallo,

      SELECT * FROM table LIMIT 95,-1; # Retrieve rows 96-last.

      Oops, sorry, das war etwas vorschnell.
      Nuetzt Dir nur was, wenn Du schon weisst, wieviele Resultate es gibt.
      Also zu umstaendlich fuer Dein Vorhaben.

      Die richtige Loesung hat Lude schon angedeutet:

      Die "letzten 3" nach einer bestimmten Sortierung
      sind die "ersten 3" nach der umgekehrten Sortierung.

      Aendere also ASC zu DESC oder umgekehrt, und verwende LIMIT  3.
      So einfach ist das ;-)

      Gruesse,

      Thomas

      1. Hallo,

        also so:

        LIMIT 3 DESC

        oder?

        Stephan

        1. Hallo,

          LIMIT 3 DESC

          Nein. Nicht ganz.
          Lerne SQL, insbesondere, wie eine SELECT-Query
          in MySQL aufgebaut sein muss.

          Das DESC gehoert in die ORDER BY Klausel.
          Die Reihenfolge spielt auch eine gewisse Rolle.

          SELECT * FROM Tabelle
            ORDER BY xyz  DESC
            LIMIT 3

          Den Link zum englischen Manual hatte ich Dir schon gegeben.
          Hier noch die deutsche Version:
          http://www.mysql.com/doc/en/SELECT.html

          Gruesse,

          Thomas

          1. Jetzt gehts, Danke!

            Stephan

          2. http://www.mysql.com/doc/en/SELECT.html

            Ja doch für jemanden wie mich und für Schweizer mag das ja genauso sein wie deutsch.
            Aber für den normal sterblichen Deutschen ist das wohl in englisch :-)
            http://www.mysql.com/doc/de/SELECT.html
            Hier das wahre deutsche Manual, was nicht nur die Schweizer als "Deutsch" bezeichnen würden.

            TomIRL

          3. hi,

            SELECT * FROM Tabelle
              ORDER BY xyz  DESC
              LIMIT 3

            ein beispiel von _dir_, mit SELECT * ...?
            *tststs*

            na schön, als "war ja nur ein beispiel um ORDER BY zu erkären" lassen wir das noch mal durchgehen ;-)

            gruss,
            wahsaga

            1. Hallo,

              ein beispiel von _dir_, mit SELECT * ...?
              *tststs*

              ;-)

              <ausrede style="faul">
                Ich hatte es doch direkt aus dem Manual mit Copy-Paste uebernommen.
              </ausrede>

              http://www.dclp-faq.de/q/q-sql-select.html
              "Im MySQL-Manual wird in den Beispielen der Einfachheit halber
               fast immer SELECT * verwendet."
              u.s.w. - bitte dort nachlesen ;-)

              Gruesse,

              Thomas

              P.S. Danke an wahsaga fuer die /de/ und /en/ Sache ;-)

    2. Hallo,

      also müsste es bei mir so lauten, oder?

      SELECT * FROM news LIMIT 2,-1;

      Dann sollte er die letzten 3 Anzeigen, oder?

      Stephan