SQL com Exemplo de cláusula [duplicate]

Estava a tentar perceber como utilizar a cláusula WITH e o objectivo da cláusula WITH.

Só percebi que a cláusula era um substituto para as sub-consultas normais.

Alguém me pode explicar isto com um pequeno exemplo em pormenor ?

Author: Community, 2012-09-23

2 answers

A cláusula SQL com cláusula foi introduzida pela Oracle na Base de Dados Oracle 9i release 2. A cláusula SQL com permite que você dê um nome a um bloco de sub-consulta (um processo também chamado de refactoring sub-consulta), que pode ser referenciado em vários lugares dentro da consulta SQL principal. O nome atribuído à sub-consulta é tratado como se fosse uma visualização em linha ou tabela. O SQL com cláusula é basicamente uma substituição drop-in para a sub-consulta normal.

Sintaxe para a SQL com a Cláusula

A a seguir está a sintaxe do SQL com cláusula ao usar um único sub-query alias.

WITH <alias_name> AS (sql_subquery_statement)
SELECT column_list FROM <alias_name>[,table_name]
[WHERE <join_condition>]

Ao usar vários pseudónimos de sub-consulta, a sintaxe é a seguinte.

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>]

Na documentação de sintaxe acima, as ocorrências de alias_name é um nome significativo que você daria à sub-consulta após a cláusula AS. Cada sub-consulta deve ser separada com uma vírgula exemplo para a instrução. O resto das consultas seguem os formatos padrão para SQL SELECT simples e complexo consulta.

Para mais informações: http://www.brighthub.com/internet/web-development/articles/91893.aspx

 281
Author: cc4re, 2018-01-18 02:39:21

Isto foi totalmente respondido aqui.

Ver os documentos da Oracle no SELECT para ver como funciona o factoring subquery, e o exemplo do Mark:

WITH employee AS (SELECT * FROM Employees)
SELECT * FROM employee WHERE ID < 20
UNION ALL
SELECT * FROM employee WHERE Sex = 'M'
 99
Author: Lorenz Lo Sauer, 2017-05-23 12:34:44