[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    309

    SQL: View + left join + sortierung

    Versuche mit SQL eine VIEW aus mehreren (insgesamt 5) Datenbanken zu erstellen

    PHP-Code:
    CREATE VIEW xxx/TabNEU AS                                  
    SELECT a.lfdNrb.Feld1c.Feld2d.Feld3e.Feld4f.Feld5
    FROM 
    ((((xxx/TabKOPF a                                     
    LEFT JOIN xxx
    /Tab1 b ON a.lfdNr b.lfdNr)                 
    LEFT JOIN xxx/Tab2 c ON a.lfdNr c.lfdNr)                 
    LEFT JOIN xxx/Tab3 d ON a.lfdNr d.lfdNr)                 
    LEFT JOIN xxx/Tab4 e ON a.lfdNr e.lfdNr)                 
    LEFT JOIN xxx/Tab5 f ON a.lfdNr f.lfdNr 
    ich brächte jetzt zusätzlich eine Sortierung nach Feld "lfdNr" (z.B. mit GROUP BY)
    oder
    ist es möglich einen Index (mit Feld "lfdNr") dazu zu erstellen?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nein. Eine View erlaubt keinen Order By, da du den später ja im Select angibst.

    Ein Index auf der PF macht ggf. Sinn, auf einer View (LF) ist das nicht möglich.
    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

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Hallo,

    SQL views sind grundsätzlich nicht geschlüsselt, d.h. haben weder einen Order By noch erlauben, dass ein Index dafür erstellt wird.

    Um die Abfrage einigermaßen performant hinzubekommen, solltest Du allerdings auf alle 6 Tabellen jeweils einen Index (oder geschlüsselte logische Datei) mit LfdNr als Schlüssel-Feld (sofern solche Zugriffswege noch nicht existieren) erstellen, da die Tabellen über die lfdNr verknüpft werden.

    Wenn Du später über die View eine GROUP BY Anweisung ausführst, werden die Datensätze automatisch sortiert und entsprechend gruppiert. (auch dann, wenn keine Order By-Anweisung angegeben wurde!).

    SQL tendiert dazu zunächst die Daten auszulesen und in temporären Objekten (z.B. Hashtables) zwischen zuspeichern und dann diese temporären Ergebnisse zu verdichten oder sortieren.

    Birgitta

    Birgitta
    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

Similar Threads

  1. SQL inner join
    By Robi in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 22-06-07, 15:52
  2. SQL left join
    By ahingerl in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 08-12-06, 08:28
  3. SQL - Join mit Bedingung und Update
    By cassi in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 22-11-06, 15:03
  4. SQL -> CREATE VIEW
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 17
    Letzter Beitrag: 11-05-06, 14:57
  5. QMQRY LEFT OUTER JOIN
    By Matthias.Hayn in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-12-04, 13:33

Berechtigungen

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