[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.762
    Es geht aber z.B. darum, die letzte Information eines Joins zu bekommen, dessen Key ich so nicht kenne:

    select * from table1 a
    left join (select wert from table2 b where a.key=b.key order by b.key, b.datum desc fetch first 1 rows only)
    Dies funktioniert so nur nicht.

    Ein häufiger Vorgang, den ich früher per

    select a.*, c.value from table1 a
    left join (Select key, max(Datum) Datum from table2 group by key) on a.key = b.key
    left join table2 c on b.key=c.key and b.datum = c.datum

    Der allerdings relativ langsam ist.
    Seit der Möglichkeit dies per lateral zu verwenden, kann ich nun das selbe einfach erreichen:

    select * from table1 a
    cross join lateral
    (select value from table2 b where a.key=b.key
    order by key, datum desc
    fetch first 1 rows only) x

    Und dies ist um Faktoren schneller. Zumal ich so auch skalare subselects, die u.U. auf dieselbe Tabelle verweisen, zu einem join lateral zusammen fassen kann.
    Wenn du dir die obige View ansiehst, so werden 3 skalare subselects auf eine Tabelle durchgeführt.
    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

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.385
    ... m.E. zunehmend off topic.
    Warum geht denn ein create view schief???
    1.) das SQL Statement ist fehlerhaft
    2.) eine der beteiligten Dateien ist beschädigt
    3.) die Metadaten der DB sind beschädigt
    4.) die Query Engine kriegt den create view trotzdem nicht hin

    @1: scheidet bei Neuerstellung einer bestehenden View aus (oder das Problem sitzt vor dem Bildschirm).
    @2: wird oft auch vom Save angemotzt und RCLSTG sollte das heilen..
    @3: RCLSTG oder RCLSTG *DBXREF sollte das heilen.
    @4: eine wahrscheinliche Variante, auch die Fehlermeldung deutet drauf hin.
    Hierbei ist zu überlegen, was beim create view eigentlich passiert:
    - Erstellung Feldliste (eine View kann dspffd) mit Typen etc.
    - Erstellung übriger Header des LF (eine View kann dspfd)
    - Syntaxprüfung des Statements
    Unterstellt, dass das Statement legal ist, dann sind eher die neueren Features und jede Form von Mehrstufigkeit die Kandidaten und nicht die base features.
    Also würde ich versuchen CTEs durch die inline Varianten zu ersetzen und soweit möglich in eigene create views auszulagern. Konstrukte, die durch aufteilen im mehrere Views vereinfacht werden können zu teilen, fördert ohnehin Lesbarkeit und Wartbarkeit.
    Software defect würde ich in jedem Fall reklamieren, da die Query Engine Views, die legal sind, auch zu erstellen hat.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    1.015
    Ketzerische Frage:
    Läuft der Select im ACS denn durch?
    kf

Similar Threads

  1. NET USE Systemfehler 64 Windows 10 Bitdefender
    By TheDevil in forum IBM i Hauptforum
    Antworten: 16
    Letzter Beitrag: 07-11-19, 12:52
  2. System-Nachricht mit Variablen
    By pk50226 in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 23-08-17, 12:12
  3. Nachricht unterdrücken
    By woodstock99 in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 22-03-16, 08:40
  4. CL- Programm- Nachricht beantworten
    By Twinkie in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 14-12-15, 12:23
  5. Nachricht ins BRMS-Log senden?
    By Chris.jan in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 26-07-15, 06:13

Berechtigungen

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