AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL (allg.): SELECT FIRST u.ä. oder <window clause>
Thema durchsuchen
Ansicht
Themen-Optionen

SQL (allg.): SELECT FIRST u.ä. oder <window clause>

Ein Thema von Jürgen Thomas · begonnen am 12. Sep 2009 · letzter Beitrag vom 15. Sep 2009
Antwort Antwort
Seite 1 von 2  1 2      
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#1

SQL (allg.): SELECT FIRST u.ä. oder <window clause>

  Alt 12. Sep 2009, 12:30
Datenbank: beliebig • Zugriff über: beliebig
Hallo,

ich habe mal wieder eine Frage zum SQL-Standard.

Die Frage, wie die ersten/letzten n Datensätze geholt werden, wird in den verschiedenen DBMS unterschiedlich beantwortet:

Firebird a: ROWS <value1> TO <value2>
Firebird b: FIRST <value1> SKIP <value2>
MS-SQL: TOP <value> PERCENT WITH TIES
MySql, Oracle a: LIMIT <value1>, <value2>
MySql, Oracle b: LIMIT <value1> OFFSET <value2>

Im SQL-Standard 2003, konkret in der Datei 5WD-02-Foundation-2003-09.pdf von http://www.wiscorp.com/sql_2003_standard.zip, konnte ich keinen Hinweis auf diese Funktionalität finden.

Andererseits gibt es dort die <window clause>, unter der ich mir nichts vorstellen kann.

Kann mir jemand einen Hinweis darauf geben, inwieweit die FIRST-Regelung im SQL-Standard (2003 oder 2008) geregelt ist, und/oder was es mit der <window clause> auf sich hat?

Danke! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: SQL (allg.): SELECT FIRST u.ä. oder <window clause>

  Alt 12. Sep 2009, 13:10
Zur Window-Clause bin ich bei iAnywhere fündig geworden.
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
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#3

Re: SQL (allg.): SELECT FIRST u.ä. oder <window clause>

  Alt 12. Sep 2009, 13:29
Danke für den Link, das ist etwas verständlicher als in der SQL-Dokumentation. Aber wozu es gut ist, verstehe ich weiterhin nicht. Ich glaube jetzt jedenfalls, dass es nichts mit meiner Hauptfrage nach SELECT FIRST u.ä. zu tun hat. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: SQL (allg.): SELECT FIRST u.ä. oder <window clause>

  Alt 13. Sep 2009, 19:35
Hallo,

schau mal hier

1

Zusammenfassung:
ROW_NUMBER ist der Standard.


Heiko
Heiko
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#5

Re: SQL (allg.): SELECT FIRST u.ä. oder <window clause>

  Alt 14. Sep 2009, 08:48
Hallo Heiko,

danke für diesen Hinweis. Damit werde ich in der SQL-Dokumentation (2003 und 2008) mal nach ROW_NUMBER suchen. Die anderen Verfahren weichen zwar insofern davon ab, weil sie mit "normalen" Klauseln des SELECT-Befehls arbeiten und ROW_NUMBER() als Funktion deklariert wird. Aber mal sehen...

Verwirrt hat mich zusätzlich ein Hinweis in der FB-Dokumentation von IBExpert (Holger Klemt):
Zitat:
The SQL-compliant ROWS syntax obviates the need for FIRST and SKIP...
ROWS in Firebird wäre also wegen größerer Nähe zum SQL-Standard eingeführt worden. Aber in der SQL-Dokumentation habe ich keine Bestätigung für diese Verwendung von ROWS gefunden.

Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: SQL (allg.): SELECT FIRST u.ä. oder <window clause>

  Alt 14. Sep 2009, 08:50
Eher aus Kompatibilitätsgründen zu Interbase
Markus Kinzler
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#7

Re: SQL (allg.): SELECT FIRST u.ä. oder <window clause>

  Alt 14. Sep 2009, 09:11
Die Kompatibilität zu Interbase entspricht doch dem "älteren" Verfahren mit FIRST/SKIP. Aber ROWS? Oder hat IB inzwischen (d.h. seit der Trennung durch FB) ROWS eingeführt, und FB hat gleichgezogen? Das würde mich eher wundern.

Aber vielleicht kann Holger "seine" Formulierung kurz erklären.

Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: SQL (allg.): SELECT FIRST u.ä. oder <window clause>

  Alt 14. Sep 2009, 09:35
First/Skip ist FB, bei IB hiess es schon immer ROWS. Deshalb wurde in FireBird das ROWS nachimplementiert
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
672 Beiträge
 
FreePascal / Lazarus
 
#9

Re: SQL (allg.): SELECT FIRST u.ä. oder <window clause>

  Alt 14. Sep 2009, 21:03
first und skip ist aber ein nicht so weit verbreiteter Standard, der offizielle Standard benutzt die Rows Syntax
hier ein Dokument zur SQL 2003 Syntax für Interessierte
http://savage.net.au/SQL/sql-2003-2.bnf.html
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#10

Re: SQL (allg.): SELECT FIRST u.ä. oder <window clause>

  Alt 15. Sep 2009, 10:03
Zitat von IBExpert:
first und skip ist aber ein nicht so weit verbreiteter Standard,
Das ist mir klar; es ist wohl hauptsächlich (oder nur?) für IB/FB relevant.
Zitat:
der offizielle Standard benutzt die Rows Syntax
Was ist denn offiziell? In meinem ersten Beitrag habe ich ein PDF-Dokument dazu genannt, aber dort nichts gefunden.
Dort wird ROWS wieder mit der <window clause> in Verbindung gebracht. Damit komme ich wieder zu meiner obigen Zusatzfrage: Wozu ist die gut? Nach Detlefs Antwort in #2 hatte ich vermutet, dass die nichts mit FIRST/LIMIT/TOP u.ä. zu tun hat. Oder etwa doch?

Unter WikiBooks: Einführung in SQL habe ich es im Moment so formuliert:
Zitat:
Der SQL-Standard hat dafür (noch) kein Verfahren festgelegt. Jedes DBMS bietet eine eigene Lösung an; abweichend vom üblichen Vorgehen in diesem Buch zeige ich mehrere Lösungen.
Welcher Text wäre angemessener? (Der Kommentar ist nur unter "Bearbeiten" sichtbar, nicht im Buchtext.)

Gruß Jürgen

PS. Nach Kritik am WikiBook insgesamt möchte ich zu gegebener Zeit fragen; im Moment geht es mir um korrekte Formulierungen in Einzelfragen.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:38 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