valores - operadores sql y ejemplos
Ejemplo de cláusula SQL WITH (2)
Posible duplicado:
Diferencia entre CTE y SubQuery?
Estaba tratando de entender cómo usar la cláusula WITH
y el propósito de la cláusula WITH
.
Todo lo que entendí fue que la cláusula WITH
reemplazaba las subconsultas normales.
¿Alguien puede explicarme esto con un pequeño ejemplo en detalle?
Esto ha sido completamente respondido here .
Consulte los documentos de Oracle en SELECT para ver cómo funciona el factoring de subconsulta y el ejemplo de Mark:
WITH employee AS (SELECT * FROM Employees)
SELECT * FROM employee WHERE ID < 20
UNION ALL
SELECT * FROM employee WHERE Sex = ''M''
La cláusula SQL WITH fue introducida por Oracle en la base de datos Oracle 9i release 2. La cláusula SQL WITH le permite asignar un nombre a un bloque de subconsulta (un proceso también llamado refactorización de subconsulta), que se puede referenciar en varios lugares dentro de la consulta SQL principal. El nombre asignado a la subconsulta se trata como si fuera una vista o tabla en línea. La cláusula SQL WITH es básicamente un reemplazo directo a la subconsulta normal.
Sintaxis para la cláusula SQL WITH
A continuación, se muestra la sintaxis de la cláusula SQL WITH cuando se utiliza un solo alias de subconsulta.
WITH <alias_name> AS (sql_subquery_statement)
SELECT column_list FROM <alias_name>[,table_name]
[WHERE <join_condition>]
Al usar múltiples alias de sub-consulta, la sintaxis es la siguiente.
WITH <alias_name_A> AS (sql_subquery_statement),
<alias_name_B> AS(sql_subquery_statement_from_alias_name_A
or sql_subquery_statement )
SELECT <column_list>
FROM <alias_name_A>, <alias_name_B> [,table_names]
[WHERE <join_condition>]
En la documentación de sintaxis anterior, las apariciones de alias_name
es un nombre significativo que le daría a la alias_name
después de la cláusula AS. Cada subconsulta debe separarse con un ejemplo de coma para la instrucción WITH . El resto de las consultas siguen los formatos estándar para consultas SQL SELECT simples y complejas.
Para más información: http://www.brighthub.com/internet/web-development/articles/91893.aspx