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:
Här står identifierare för det namn som senare används i SELECT-satsen.
WITH identifierare AS ( SELECT ... FROM ... )
[identifierare2 AS (SELECT ... FROM ...)]
SELECT ...
FROM ..., identifierare, ...
[WHERE osv..]
2. Exempel
Vi tänker oss att vi har följande sats:
Här kan vi med WITH bryta ut WHERE-delen i en egen 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
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