[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2005
    Beiträge
    51

    SQL - automatische Sortierung der Datenbank

    Hallo zusammen,

    nach einer Systemumstellung auf V7R1 mussten wir feststellen, dass sich die Datenbank bei Select Abfragen anders verhält als bei früheren Releases.
    Speziell geht es darum, dass die Daten per SQL automatisch sortiert werden obwohl kein ORDER BY angegeben wurde. Die Sortierung wird dabei spaltenweise durchgeführt.

    Gibt es eine Möglichkeit dies abzustellen und die Datensätze per SELECT in der Reihenfolge zu bekommen, wie sie auch in der Datei stehen?

    Behelfen kann man sich leider nur wenn man im ORDER BY auf die relative Satznummer geht. Vielleicht hat jemand eine Idee

    Beste Grüße,
    Daniel

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    Der Optimizer entscheidet, mit welchen Zugriffswegen er am schnellsten an die gewünschten Daten herankommt. Die Entscheidung hängt ab, von der Feld-Auswahl, Join-Anweisungen, WHERE-Bedingungen, GROUP BY, ORDER BY Anweisungen sowie der Datenzusammensetzung ab.
    Sofern kein (zusätzlicher) ORDER BY angegeben ist, werden die Datensätze in der Reihenfolge des verwendeten Zugriffsweg ausgegeben, oder falls ein Table Scan ausgeführt wird in Eingangsfolge.

    Übrigens seit Release 7.1 (TR5 oder TR6) ist es auch möglich SQL Indices über die Relative Satz-Nr. zu bilden.

    Sofern Du die Datensätze in der Reihenfolge der relativen Satz-Nr. benötigst, musst Du einen entsprechenden Order By angeben. Ansonsten gibt es (und gab es auch früher nicht) keine Garantie, dass die Datensätze in der gewünschten Reihenfolge ausgegeben werden.
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    Das liegt am Optimizer, da dieser ggf. über Index sortiert.
    Je nach Where-/Group-by-Klausel gibt es dann eine andere Sortierung ohne eine Order-By-Klausel.
    SQL hat ohne Order nie eine Sortierfolge garantiert. Da musst du nur sehr viel Glück gehabt haben.

    Eine FIFO-Folge kann man wirklich nur per Order erstellen.
    Spätesten aber bei REUSEDLT(*YES) ist die Sortierung auch wieder vom Zufall und nicht von der Entstehung abhängig.

    Abstellen lässt sich das nicht, macht für SQL auch wirklich keinen Sinn.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Sql-Sortierung
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 19-05-15, 08:01
  2. PLF-Modul Listgeneratur *Sortierung auf dem Lieferschein*
    By amazing123 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 24-03-15, 10:14
  3. SQL: Sortierung individuell nach einer Werte-Tabelle
    By bie-dro in forum NEWSboard Programmierung
    Antworten: 18
    Letzter Beitrag: 08-09-14, 20:26
  4. Automatische Seitendrehung
    By dino in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 14-03-14, 12:35
  5. Automatische Datenverarbeitung
    By Dekker in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 09-03-01, 21:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •