Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
MSSQL Abfrage der letzten 20 Items
Maffi1986
myCSharp.de - Member

Avatar #avatar-3437.gif


Dabei seit:
Beiträge: 54
Herkunft: Soest

Themenstarter:

MSSQL Abfrage der letzten 20 Items

beantworten | zitieren | melden

verwendetes Datenbanksystem: MSSQL Express

Hallo,

irgendwie stehe ich grade auf dem Schlauch, gibt es ein gegenteil von TOP?
SELECT TOP 20
       [gutschriftnummer]
      ,[artikelbezeichnung]
      ,[menge]
      ,[einzelpreis] 
      ,[datum]
  FROM [waagemanager].[dbo].[gutschriften] 
  WHERE kdnr = 9 Order by id desc

Das gibt mir die ersten 20 aus, ich will aber die letzten 20 einträge ausgeben.

Hat jemand nen Tipp für mich?

Danke im vorraus
private Nachricht | Beiträge des Benutzers
Taipi88
myCSharp.de - Member

Avatar #avatar-3220.jpg


Dabei seit:
Beiträge: 1044
Herkunft: Mainz

beantworten | zitieren | melden

Hi,

ich glaub das gibt's so nicht direkt. Da ich allerdings davon ausgehe, dass die Daten dort in irgendeiner Art sortiert sind oder sortiert werden - schlage ich eine umgekehrte Sortierung vor ;)

Normal:

SELECT TOP 20
[gutschriftnummer]
,[artikelbezeichnung]
,[menge]
,[einzelpreis] 
,[datum]
FROM [waagemanager].[dbo].[gutschriften]
WHERE kdnr = 9 Order by id
ORDER BY datum

Umgekehrt:

SELECT TOP 20
[gutschriftnummer]
,[artikelbezeichnung]
,[menge]
,[einzelpreis] 
,[datum]
FROM [waagemanager].[dbo].[gutschriften]
WHERE kdnr = 9 Order by id desc
ORDER BY datum DESC

LG

Oh - und noch als Nachtrag - was immer du dort genau tust hat offensichtlich mit Belegen zu tun.
Ich als Kunde sehe es zwar häufig, dass Tabellen im Standard ohne Sortierung angezeigt werden - kann dir aber sagen, dass ich das überhaupt nicht leiden kann.

Wenn ich mir als Kunde Belege aufrufe - dann hab ich am liebsten die Neuesten vorn stehen, wenn ich schon die Startanzeige nicht anpassen kann...
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Taipi88 am .
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2340

beantworten | zitieren | melden

Hallo,

das was Taipi88 beschreibt ist der einzig richtige und sinnvolle Weg. TOP liefert immer die ersten n-Einträge der Ergebnismenge. Möchte man nun die letzten n-Ergebnisse, muss die Abfrage das Ergebnis anders herum zurück liefern.

Das TOP bezieht sich ja schließlich auf die Ergebnismenge und nicht den Inhalt der Tabelle auf die die Abfrage ausgeführt wird.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
Maffi1986
myCSharp.de - Member

Avatar #avatar-3437.gif


Dabei seit:
Beiträge: 54
Herkunft: Soest

Themenstarter:

beantworten | zitieren | melden

Vielen Dank für die Hilfe, hat Super funktioniert.
private Nachricht | Beiträge des Benutzers
tom-essen
myCSharp.de - Experte

Avatar #avatar-2140.png


Dabei seit:
Beiträge: 1928
Herkunft: NRW

beantworten | zitieren | melden

Hallo,

unabhängig von der o.g. Lösung möchte ich noch den Hinweis auf ROW_NUMBER (Transact SQL) geben, welches Zeilennummern zu einem Abfrageergebnis hinzufügt, welche dann in einer übergeordneten Abfrage z.B. über
RowNr ≥ (max(RowNr)-20)
verwendet werden könnten.
Nobody is perfect. I'm sad, i'm not nobody
private Nachricht | Beiträge des Benutzers