Newsletter
DBConcepts Logo Original

Die SQL WITH clause (oder Subquery Refactoring)

Die SQL WITH clause (oder Subquery Refactoring) wurde mit der Oracle 9i release 2 database eingeführt und deren Benutzung ist seither Standard da sie deutliche Vorteile bietet. Mit der WITH clause wird eine temporäre Tabelle/View erstellt, auf die im Nachhinein zugegriffen werden kann. Dadurch spart man sich bei komplexen SQL-Statments jede Menge an Code und macht ihn auch meist lesbarer. Die temporäre Tabelle/View wird nur solang innerhalb eines SQL Statements verwendet, bis die Ausführung beendet ist.

 

Als Beispiel nehmen wir eine Employee und Department Tabelle.

Employees:

Bild1

Departments:


Wir wollen nun alle Employees anzeigen deren Standort sich in New York verbindet. Standardmäßig benutzen wir ein Subselect da sich die Location in der Departments Tabelle befindet.

SELECT *

FROM emp e

WHERE e.DEPTNO in (SELECT d.DEPTNO from dept d where d.loc = ‚NEW YORK‘);

 

 

 

 

 

 

Jetzt benutzen wir die WITH clause und erhalten das gleiche Ergebnis.

With w_dept_ny as

(SELECT /*+ materialize */ d.deptno

FROM dept d

WHERE d.loc = ‚NEW YORK‘)

 

SELECT *

FROM emp e

join w_dept_ny d on e.deptno = d.deptno;

Bild2 2
Bild3 1

Seit Oracle 12c ist es nun auch möglich PL/SQL Functions und Procedures in eine WITH claus zu packen. Dazu wird es in Zukunft noch einen gesonderten Post geben.

DBConcepts

Weitere Beiträge

DBConcepts Adventpunsch

Am Dienstag, den 03.12 findet heuer unser allseits beliebter Adventpunsch statt. Dieses Jahr treffen wir uns wieder im Weihnachtsdorf im Alten AKH (Universitätscampus).Wir haben einen eigens für uns

DBConcepts

Newsletter abonnieren

Wir freuen uns, dass wir Ihr Interesse für den Newsletter geweckt haben! Mit dem Versand dieser Zustimmung erhalten Sie regelmäßig alle aktuellen Informationen!

Vielen Dank für Ihr Interesse an unserem Unternehmen. Derzeit suchen wir niemanden für diese Stelle. Aber wir sind immer an talentierten Menschen interessiert und freuen uns von Ihnen zu hören! Schicken Sie uns einfach Ihren Lebenslauf und eine kurze Nachricht und schreiben Sie an welcher Stelle Sie interessiert sind: recruitment@dbconcepts.com. Wir freuen usn von Ihnen zu hören!