Markus Kriegl: x Einträge pro Seite anzeigen

Hallo!

Auch ich bin an dem Punkt angelangt an dem ich in einer Webapplikation eine Funktion zum Durchblättern von Datensätzen benötige.
Bei mir ist die Situation folgende: Aktuell kann der User bereits zum Beispiel nach Mitarbeitern suchen die mit "T" beginnen.
Soweit so gut also wird das entsprechende ResultSet aus der Tabelle "mitarbeiter" generiert.
Nun befinden sich dort 50 Einträge (im ResultSet) diese sollen nun 10er weise auf 5 Seiten aufgeteilt werden.

Meine Frage was ist die beste Vorgehensweise für solch eine Problemstellung? Es ist IMHO nicht gerade performant wenn ich das ganze ResultSet bereits am Anfang generiere oder doch?

Doch wenn ich es nicht generiere muss ich mir in den dynamisch generiereten Seiten 1. alle Abfrageangaben merken - also nachname="T" und zusätzlich muss ich mir noch rausberechnen welche Einträge ich gerade benötige - Dies wäre meiner Meinung nach vernünftiger doch wie geh ich das im Oracle an?
Also eine Abfrage in der Art(für die Einträge 11-20):
Wähle alle Mitarbeiter deren nachname mit "t" beginnt(klar) UND nimm von diesen dann den 11. - 20.

cu, Markus

  1. Hallo,

    Also eine Abfrage in der Art(für die Einträge 11-20):
    Wähle alle Mitarbeiter deren nachname mit "t" beginnt(klar) UND nimm von diesen dann den 11. - 20.

    SELECT * FROM mitarbeiter WHERE nachname LIKE "T%" LIMIT 11,20;

    Wie isses damit? Ist zwar MySQL-Syntax, aber Oracle müsste das zumindest so ähnlich auch machen.

    Gruesse,
    Joerg

    1. Hallo Jörg,

      Wähle alle Mitarbeiter deren nachname mit "t" beginnt(klar) UND nimm von diesen dann den 11. - 20.

      Für den OP: Dies wird nach meinem Wissen von Oracle nicht unterstützt :-(

      SELECT * FROM mitarbeiter WHERE nachname LIKE "T%" LIMIT 11,20;

      Wie isses damit? Ist zwar MySQL-Syntax, aber Oracle müsste das zumindest so ähnlich auch machen.

      Nein, zumindest nicht Oracle 9i, siehe Featurevergleich MySQL - Oracle 9i (unter Expressions, am einfachsten nach dem Stichwort LIMIT suchen).

      LIMIT ist _das_ Feature von MySQL, das ich bei anderen DBMS wirklich vermisse.

      Freundliche Grüße

      Vinzenz

  2. echo $begrüßung;

    Wähle alle Mitarbeiter deren nachname mit "t" beginnt(klar) UND nimm von diesen dann den 11. - 20.

    Schau dir an, wie eine Limitierung in PEAR_DB gelöst ist: Methode DB_oci8::modifyLimitQuery() in der Datei oci8.php

    echo "$verabschiedung $name";

    1. Hallo dedlfix,

      Schau dir an, wie eine Limitierung in PEAR_DB gelöst ist: Methode DB_oci8::modifyLimitQuery() in der Datei oci8.php

      herzlichen Dank für diesen nützlichen Tipp!

      Freundliche Grüße

      Vinzenz