-
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.
-
... 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
-
Ketzerische Frage:
Läuft der Select im ACS denn durch?
kf
Similar Threads
-
By TheDevil in forum IBM i Hauptforum
Antworten: 16
Letzter Beitrag: 07-11-19, 12:52
-
By pk50226 in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 23-08-17, 12:12
-
By woodstock99 in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 22-03-16, 08:40
-
By Twinkie in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 14-12-15, 12:23
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks