programmera.net -> oracle -> normal     för utskrift      info@programmera.net

Nästlade frågor med WITH

1. WITH
2. Exempel

1. WITH

Med WITH kan man definiera SELECT-satser mot ett namn. Detta namn kan användas senare i satsen som om SELECT-satsen vore en tabell. Med WITH kan man alltså förenkla en stor och komplicerad SELECT-sats genom att bryta ut vissa delar. WITH har följande syntax:
WITH identifierare AS ( SELECT ... FROM ... )
[identifierare2 AS (SELECT ... FROM ...)]
SELECT ... 
FROM ..., identifierare, ... 
[WHERE osv..]
Här står identifierare för det namn som senare används i SELECT-satsen.

2. Exempel

Vi tänker oss att vi har följande sats:
SQL> SELECT emp_pk, last_name, dep_name
FROM emp
JOIN dep USING (dep_pk)
WHERE salary > 22000;

    EMP_PK LAST_NAME     DEP_NAME
---------- ------------- --------------------
         1 Svensson      Ledningsgruppen
         3 Johansson     Java-utveckling
         4 Magnusson     Java-utveckling
Här kan vi med WITH bryta ut WHERE-delen i en egen sats:
SQL> WITH my_emp AS (SELECT * FROM emp WHERE salary > 22000)
SELECT emp_pk, last_name, dep_name
FROM my_emp
JOIN dep USING (dep_pk);

    EMP_PK LAST_NAME     DEP_NAME
---------- ------------- --------------------
         1 Svensson      Ledningsgruppen
         3 Johansson     Java-utveckling
         4 Magnusson     Java-utveckling