Stefan: Vorletzten Datensatz auslesen

Hallo,
wie kann ich mir (per SQL Befehl) immer den vorletzten bzw. den vor-vorletzten Datensatz anzeigen lassen?

Vielen Dank.

mfg Stefan

  1. Hi Stefan

    wie kann ich mir (per SQL Befehl) immer den vorletzten bzw. den vor-vorletzten Datensatz anzeigen lassen?

    Indem du die Sortierreihenfolge änders (ASC, DESC) das du den zweiten, resp
    den dritten brauchst. Danach benutzt du noch Limit um zu sagen den wievielten.
    Mehr zum Syntax verrät dir das Handbuch deines DBMS.

    Gruss Daniela

    --
    Nein, wir frieren unsere Hühner nicht auf Gletschern fest.
    1. Hallo Daniela,
      Danke, für den Befehl mit dem LIMIT, nur egal wo ich diesen einfüge, jedesmal bekomme ich eine Fehlermeldung wieder zurück...

      So sieht mein SQL Befehl für eine Access-DB aus:
      Select * From tabelle WHERE del='no' ORDER BY id desc

      Wo setzte ich nun den LIMIT Befehl?

      1. Hallo,

        ein bisschen bei den Herstellern nachlucken dürfte dein Problem lösen... http://www.mysql.com/doc/en/SELECT.html

        Odium

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

          gibts so was eigentlich auch bei Oracle... finde da nie was

          gruss und hallo

          1. Hi, hallo

            dort gibt es das "invisible" Feld "rownum"

            siehe hier:

            http://www.orafaq.com/faqsql.htm

            Tschau, tschüß,
            Frank

        2. Danke erstmal für den Tipp, aber entweder bin ich zu doof, oder es funktioniert einfach nicht. Ich bekomme immer einen Syntax error in ORDER BY clause. Ist folgender Befehl vielleicht mit Access 97 nicht möglich?

          Select * From tabelle WHERE del='no' ORDER BY id desc LIMIT 1,5

          1. Hallo,

            aha Access... MySql istv etwas anders... soweit ich weiß wird die Limit Klausel nicht bei allen MS DB-systemen unterstützt...

            Odium

            1. Hallo,

              unter MS-SQL server kann man Top verwenden... siehe dazu mal in der sql-hilfe von access nach... ansonsten musst du es eben programmiertechnisch lösen...

              Odium

              1. Hallo Odium,
                mit dem TOP Befehl habe ich es auch schon probiert, nur wenn ich am Ende DESC angebe, dann zeigt er mir die letzten zwei Datensätze vom Ende der ganzen Tabelle an. Auch ziemlich doof :-)

                Hast du vielleicht eine Ahnung, wie man dies Programmtechnisch mit ASP/JScript lösen könnte?

                1. Hi, hallo

                  du hast den Top Befehl gefunden und weißt auch wie man diesen einsetzen kann ... der Rest hat etwas mit Logik zu tun:

                  selektiere die ersten beiden Datensätze von einem nach ID abwärts sortierten Recordset

                  selektiere davon den obersten mit nach ID aufsteigender Sortierung

                  so, um dir als Anfänger etwas unter die Arme zu greifen:

                  SELECT TOP 1 * FROM (SELECT TOP 2 * FROM tabelle1 ORDER BY ID DESC) ORDER BY ID ASC

                  war das jetzt so kompliziert?

                  und sage mir mal bitte, warum du dir Antworten von vorherigen Postings gar nicht oder nur unaufmerksam durchliest, speziell was "Dropdownfeld füllen" angeht

                  für die Zukunft (ich weiß ja, was du ungefähr an SW im Einsatz hast, aber andere vielleicht nicht) versuche deinem Posting mal hinzuzufügen, was du genau benutzt, wenn du von Datenbank/SQL redest

                  Tschau, tschüß,
                  Frank

                  1. Danke erstmal. Ich probiers mal aus....

                    Sieht auch nicht kompliziert aus, ist auch logisch. Das was halt fehlt ist die Erfahrung und wie schreibe ich was. Aber darüber können wir uns ja nächstes Jahr nochmal unterhalten :-)

                    Was mein Doppelposting angeht, so dachte ich ich setze es mal wieder etwas weiter nach vorne, weil einfach keine brauchbaren Antworten dabei waren. Leider habe ich deine Antwort erst danach gelesen. Aber so schlimm ist das doch nun auch wieder nicht, oder?

                    Ich poste das nächste mal genauer. Versprochen.

                    Stefan.

                    1. Hi

                      viel Erfolg beim Probieren :-) funktioniert, vorhin noch selbst getestet.

                      ich bin der Meinung (einige andere Langzeitforumer sicher auch) dieses Forum hier soll neben dem Aspekt "gegenseitiger Informationsaustausch" auch einen leichten erziehenden Charakter haben, gerade für n00bse:

                      • sich mit einer Problemstellung gründlicher auseinanderzusetzen
                      • selbst Zusammenhänge zu erkennen ... SelfHTML hat ja ein gewisses Motto soweit ich mich erinnere
                      • sich detailliert zu äußern um keine Informationsbarrieren aufzubauen
                      • sich an Bestimmungen zu halten (Forums FAQ)
                        ...

                      es gibt viele und viel schlechtere Poster als dich - also kein Grund zum virtuellen Selbstmord :-)

                      Erfahrung kommt mit der Zeit :-)

                      Tschau, tschau,
                      Frank

                2. Hallo,

                  wenn dein DBMS nicht in der Lges ist spezifische SQL-Klauseln zu akzeptieren musst du es prgrammiertechnisch lösen, was aber einen höheren aufwand bedeutet und der datenbank mehr performance abverlangt...

                  z.B.

                  alle datensätze mit bestimmten kriterien aus der db holen

                  schleifenweises durchgehen der ergebnisdatensätze, dabei einen zähler für jeden schleifendurchgang inkrementieren und bei zutreffen der bedingungen ausgeben oder eben nicht...

                  beispiel asp(vb-script:

                  dim zaehler
                  zaehler = 0

                  sql = "select * from tabelle whe name = 'hans'"
                  set rs = db.execute(sql)
                  ' db sollte vorher natürlich instanziert sein

                  'ich will nun nur datensatz 2 und 3 ausgeben der erste datensatz ist dabei der 0te

                  do while not rs.eof
                  if zaehler = 2  or zaehler = 3 then
                  response.write "deine html-tags" & rs("felder") & "schließende html-tags" 'u.s.w
                  end if
                  zaehler = zaehler + 1
                  rs.movenext
                  loop

                  wie gesagt, fein ist das nicht... der weg über ein stimmiges sql-statement ist immer vorzuziehen...

                  Odium

              2. Hallo,

                limit gibt es by Access-DB nicht. In ASP heißt das
                select top $n from tablename order by indexname asc/desc

                Leider kennt top nur einen Parameter $n = Anzahl der Datensätze ab Aufsetzpunkt.

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.