Anmelden

View Full Version : SQL WITH



jerry
14-02-06, 17:16
Hallo,
ich habe in sql prozeduren (von wem anders) folgende Konstruktion gesehen:

Begin
insert into temp
with tempsf (a,b,c)
as select..
anschliessend kommt dann ein weiteres select:
select .. from a inner join tempsf..

.. was tut das with bzw. wo ist so etwas erlaubt? Im SQL-Reference habe ich kein Beispiel gefunden.

Danke an alle SQL Spezies im voraus.

Fuerchau
15-02-06, 08:47
Vom Grundsatz her ist ein WITH überall erlaubt, wo ein sog. Fullselect erlaubt ist.
Mittels WITH werden temporäre Ergebnistabellen gebildet.
Im Prinzip vereinfacht dies Abfragen, die man mittels Query in mehreren Schritten ausgeführt hat:
1. Query mit Ergebnis in Ausgabedatei
2. Query mit Ergebnis in Ausgabedatei
3. Query mit Join über diese Ausgabedateien und ggf. weiterer Tabellen

Dein Insert ist also soweit korrekt, da ein Fullselect im Anschluss möglich ist.

Mittels WITH können auch mehrere Zwischenergebnisse erzeugt werden:

with
TableA (F1, F2, ...) as select ....
[, TableB (F1, F2, ...) as select ...]
select ...

In den Subselects der einzelnen Zwischenergebnisse kann auch durchaus mittels Join Bezug genommen werden auf vorherige Zwischenergebnisse.

Das Ganze ist auch als Common-Table-Expression (o.ä.) bekannt.