Vorletzten Datensatz auslesen
Stefan
- datenbank
0 Daniela Koller
Hallo,
wie kann ich mir (per SQL Befehl) immer den vorletzten bzw. den vor-vorletzten Datensatz anzeigen lassen?
Vielen Dank.
mfg Stefan
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
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?
Hallo,
ein bisschen bei den Herstellern nachlucken dürfte dein Problem lösen... http://www.mysql.com/doc/en/SELECT.html
Odium
gibts so was eigentlich auch bei Oracle... finde da nie was
gruss und hallo
Hi, hallo
dort gibt es das "invisible" Feld "rownum"
siehe hier:
http://www.orafaq.com/faqsql.htm
Tschau, tschüß,
Frank
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
Hallo,
aha Access... MySql istv etwas anders... soweit ich weiß wird die Limit Klausel nicht bei allen MS DB-systemen unterstützt...
Odium
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
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?
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
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.
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:
es gibt viele und viel schlechtere Poster als dich - also kein Grund zum virtuellen Selbstmord :-)
Erfahrung kommt mit der Zeit :-)
Tschau, tschau,
Frank
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
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