Announcement

Collapse
No announcement yet.

SELECT, der nur die ersten n Records ausgibt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SELECT, der nur die ersten n Records ausgibt

    Gerade für Web-Anwendungen,aber auch für Statistiken ist diese Fragestellung interessant:

    Ein SELECT-Statement, das nicht die gesamte Ergebnismenge liefert, sondern
    nur eine definierte Anzahl an Zeilen.

    Beispiele:

    - Die Top-Ten-Kunden eines Unternehmens

    - Suchdialog im Web oder einer C/S-Anwendung, der sinnvollerweise nur die ersten 100 Treffer liefern soll

    In Oracle geht sowas mit der Pseudospalte ROWNUM, die Interbase leider nicht kennt.

  • #2
    Hallo Kai,
    die aktuellste Version 6.5, die gerade vor wenigen Tagen angekündigt wurde, hat dieses Feature. Da kannst Du z.B. schreiben "SELECT * FROM kunden order by plz rows 1 to 10". Bei anderen Versionen geht das nur über eine Select-Prozedur, was leider weit weniger flexibel ist.

    Gruss
    Karsten Strobe

    Comment


    • #3
      Ach je (bevor mich die Firebird-Fans auffressen): Firebird soll ein ähnliches Feature haben

      Comment


      • #4
        Kleine Trickkiste mit einem Generator:

        create generator row_num
        set generator row_num to 0

        select * from tabelle
        where gen_id(row_num,1) between 1 and 30

        (Die Where Bedingung wird intern 3 mal aufgerufen, daher kommen jetzt die ersten 10 Ergebnisse)

        select * from tabelle
        where gen_id(row_num,1) between 31 and 60

        (die nächsten 10 Ergebnisse)

        Man muß aber sicherstellen, das der Generator nicht konkurrierend benutzt wird, daher auf jeden Fall aufpassen

        Comment

        Working...
        X