AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage "Die letzten 50 Datensätze" einer MSSQL DB
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage "Die letzten 50 Datensätze" einer MSSQL DB

Ein Thema von Andre.R · begonnen am 18. Sep 2007 · letzter Beitrag vom 1. Okt 2007
Antwort Antwort
Andre.R

Registriert seit: 31. Mai 2003
45 Beiträge
 
#1

SQL Abfrage "Die letzten 50 Datensätze" einer MSSQ

  Alt 18. Sep 2007, 14:21
Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL Abfrage "Die letzten 50 Datensätze" einer

  Alt 18. Sep 2007, 14:26
Nimm TOP und sortiere absteigend
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: SQL Abfrage "Die letzten 50 Datensätze" einer

  Alt 18. Sep 2007, 14:33
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.
  Mit Zitat antworten Zitat
Andre.R

Registriert seit: 31. Mai 2003
45 Beiträge
 
#4

Re: SQL Abfrage "Die letzten 50 Datensätze" einer

  Alt 19. Sep 2007, 10:22
Hallo,

danke für die schnelle Hilfe.
Zitat:
Nimm TOP und sortiere absteigend
Leider ist die Sortierung jetzt gerade falsch herum ... gibts da auch ne Lösung ?

andre
  Mit Zitat antworten Zitat
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: SQL Abfrage "Die letzten 50 Datensätze" einer

  Alt 19. Sep 2007, 10:33
Nochmal umdrehen evtl.
SELECT * FROM (SELECT TOP 50 * FROM tabelle ORDER BY id DESC) ORDER BY id ASC

Gruß
tr909
  Mit Zitat antworten Zitat
Andre.R

Registriert seit: 31. Mai 2003
45 Beiträge
 
#6

Re: SQL Abfrage "Die letzten 50 Datensätze" einer

  Alt 29. Sep 2007, 10:13
Hmmm,

ich komme nicht drauf ....
Was mache ich falsch, es kommt immer ne Fehlermeldung.

SQL-Code:

SELECT 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
Meldung 156, Ebene 15, Status 1, Zeile 21
Falsche Syntax in der Nähe des 'FROM'-Schlüsselwortes.

andre
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: SQL Abfrage "Die letzten 50 Datensätze" einer

  Alt 29. Sep 2007, 11:40
Hallo André,

probiere es so:

SQL-Code:
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
Grüße vom marabu
  Mit Zitat antworten Zitat
Andre.R

Registriert seit: 31. Mai 2003
45 Beiträge
 
#8

Re: SQL Abfrage "Die letzten 50 Datensätze" einer

  Alt 29. Sep 2007, 17:03
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: SQL Abfrage "Die letzten 50 Datensätze" einer

  Alt 29. Sep 2007, 18:28
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
  Mit Zitat antworten Zitat
Andre.R

Registriert seit: 31. Mai 2003
45 Beiträge
 
#10

Re: SQL Abfrage "Die letzten 50 Datensätze" einer

  Alt 1. Okt 2007, 07:11
Hallo marabu,

dann bin ich mir jetzt etwas sicherer dass ich das Richtige mache
Vielen Dank für Deine Hilfe.

andre
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz