![]() |
Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO
SQL Abfrage "Die letzten 50 Datensätze" einer MSSQ
Hallo,
vielleicht kann mir jemand helfen. Damit mein Delphiprogramm nicht immer alle Datensätze aus der MSSQL Datenbank laden muss, möchte ich nur die Letzten 50 Datensätze anzeigen. Ich habe schon raus gefunden, dass es den Befehl "TOP" gibt, welcher mir die ersten Datensätze anzeigt... Ich bräuchte aber die letzten. Gruß andre |
Re: SQL Abfrage "Die letzten 50 Datensätze" einer
Nimm TOP und sortiere absteigend ;)
|
Re: SQL Abfrage "Die letzten 50 Datensätze" einer
Wenn du nen autoinc-Feld hast kannst du es auch darüber machen
SELECT * FROM tabelle ORDER BY autoinf_feld DESC LIMIT 1,50 Gruß tr909 *edit* ich weiß aber nicht ober LIMIT bei MSSQL geht. Ansonsten halt wie o.a. SELECT TOP 3 * from TABELLE ORDER by pk DESC Dies sollte klappen, falls TOP vor ORDER ausgeführt wird. |
Re: SQL Abfrage "Die letzten 50 Datensätze" einer
Hallo,
danke für die schnelle Hilfe. Zitat:
andre |
Re: SQL Abfrage "Die letzten 50 Datensätze" einer
Nochmal umdrehen evtl.
SELECT * FROM (SELECT TOP 50 * FROM tabelle ORDER BY id DESC) ORDER BY id ASC Gruß tr909 |
Re: SQL Abfrage "Die letzten 50 Datensätze" einer
Hmmm,
ich komme nicht drauf .... Was mache ich falsch, es kommt immer ne Fehlermeldung.
SQL-Code:
Meldung 156, Ebene 15, Status 1, Zeile 21SELECT TOP 5 [dbID] ,[dbDateTime] ,[dbinLastWritten] ,[inindex] ,[time_pre_low_plunger] ,[time_pre_high_plunger] ,[Pre_diameter_A_plunger] ,[pre_diameter_B_plunger] ,[pre_boght_out_head_plung] ,[respare1] ,[respare2] ,[respare3] ,[respare4] ,[respare5] ,[respare6] ,[respare7] ,[respare8] ( FROM [p123].[dbo].[Data159DB240] ORDER BY dbo.Data159DB240.dbID DESC) ORDER BY dbo.Data159DB240.dbID ASC Falsche Syntax in der Nähe des 'FROM'-Schlüsselwortes. andre |
Re: SQL Abfrage "Die letzten 50 Datensätze" einer
Hallo André,
probiere es so:
SQL-Code:
Grüße vom marabu
SELECT
dbID, dbDateTime, dbinLastWritten, inindex, time_pre_low_plunger, time_pre_high_plunger, Pre_diameter_A_plunger, pre_diameter_B_plunger, pre_boght_out_head_plung, respare1, respare2, respare3, respare4 respare5, respare6, respare7, respare8 FROM Data159DB240 D WHERE dbID IN ( SELECT TOP 5 dbID FROM Data159DB240 ORDER BY dbID DESC ) ORDER BY dbID |
Re: SQL Abfrage "Die letzten 50 Datensätze" einer
Hallo marabu,
Perfekt !! Das funzt ! Danke Dir. Aber noch ne Frage ... Um unnötigen traffic mit dem SQL-Server zu vermeiden, habe ich mir gedacht dass ich diesen SQL Script einbaue damit nicht jedes mal die ganzen Datensätze geladen werden müssen (Da kommen einige zusammen). Ist diese Denkweise OK? Oder ist das ein falscher Weg ? Ich habe jetzt diesen Script in das TADOQuery.SQL eingebunden, der auch beim aktivieren (TADOQuery.Active) Funktioniert. Wenn nun aber ein neuer Datensatz hinzu kommt (Append), dann wird scheinbar dieser SQLScript nicht mehr aufgerufen. Nur durch TADOQuery.Active = false und dann wieder TADOQuery.Active = true. Oder gibt es ne andere Lösung ? Danke noch mal ... andre |
Re: SQL Abfrage "Die letzten 50 Datensätze" einer
Hallo André,
ich finde es gut, dass du dir Gedanken um das Datenaufkommen in einer Client-Server-Umgebung machst. Wenn dir die 50 neuesten Datensätze genügen, warum dann mehr anfragen und transportieren? Mit SQL kannst du den Datenverkehr exakt auf dein Anwendungsproblem zuschneiden. Wenn du es richtig machst, dann gibt es kaum Nachteile. Damit die Auswahl der Sätze schnell von statten geht, musst du sicher stellen, dass ein Index für das Selektionskriterium existiert. Bei den heute verfügbaren Bandbreiten ist das Reaktionsverhalten deines Programms oft wichtiger als die zu übertragende Datenmenge. Für die Optimierung stehen dir dabei zwei Methoden zur Verfügung: Selektion (Zeilenauswahl) und Projektion (Spaltenauswahl). Bei manchen Programmen hole ich zuerst nur die Primärschlüssel und erst später die für eine Anzeige benötigten restlichen Felder vom Server. Klar, dass bei Neuzugängen deine Query veraltet. Mit der Methode Requery() kannst du sie wieder auf den aktuellen Stand bringen. Freundliche Grüße |
Re: SQL Abfrage "Die letzten 50 Datensätze" einer
Hallo marabu,
dann bin ich mir jetzt etwas sicherer dass ich das Richtige mache :-) Vielen Dank für Deine Hilfe. andre |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz