Freitag, Mai 23, 2014

Lateral und Cross Apply in 12c

In 12c hat Oracle weitere Anstrengungen unternommen, den Anforderungen des ANSI SQL-Standards bzw. den Herausforderungen der Konkurrenz zu entsprechen und neue Klauseln für die Spezifizierung von Join-Operationen eingeführt:
  • cross outer apply clause: die Klausel existiert in zwei Varianten:
    • cross apply: erlaubt einen korrelierten cross join - nur die Sätze der linken Tabelle werden berücksichtigt, zu denen die korrelierende Bedingung in der Operation auf der rechten Seite ein Ergebnis liefert (an dieser Stelle verweise ich auf das Beispiel der Dokumentation, da ich meinen beschreibenden Satz möglicherweise selbst bei erneuter Lektüre nicht mehr nachvollziehen kann).
    • outer apply: eine ähnliche Variante zum outer join, die ebenfalls eine korrelierte Abfrage (oder einen entsprechenden table Operator) auf der rechten Seite erlaubt.
  • lateral: erlaubt die Verwendung einer korrelierenden Operation auf der rechten Seite eines einfachen Joins. Intern wurde dieses Schlüsselwort schon deutlich früher unterstützt, war aber nicht in Benutzerabfragen erlaubt, wie man bei Jonathan Lewis nachlesen kann.
Während lateral zum ANSI Standard gehört (und seit Version 9.3 auch von postgres unterstützt wird), sind die apply-Operatoren anscheinend aus T-SQL übernommen, was meine private Theorie unterstützt, dass die SQL-Dialekte der großen RDBMS immer stärker konvergieren.

Nachtrag 23.05.2014: zu diesen neuen Syntaxelementen gibt es auch schon eine Unterstützung im Trivadis CodeChecker, den zu erwähnen ich hier offenbar vergessen hatte.

Keine Kommentare:

Kommentar veröffentlichen