télécharger Peut-on avoir plusieurs "WITH AS" en SQL simple-Oracle SQL




télécharger oracle sql developer gratuit (4)

J'ai posé une question très simple: Oracle autorise-t-il plusieurs "WITH AS" dans une seule instruction sql.

Exemple:

WITH abc AS( select ......)

WITH XYZ AS(select ....) /*This one uses "abc" multiple times*/

Select ....   /*using XYZ multiple times*/

Je peux faire fonctionner la requête en répétant la même requête plusieurs fois, mais je ne veux pas faire cela, et tirer parti de "WITH AS". Cela semble être une simple exigence, mais l'oracle ne me le permet pas:

ORA-00928: mot clé SELECT manquant


Oui, vous pouvez...

WITH SET1 AS (SELECT SYSDATE FROM DUAL), -- SET1 initialised
     SET2 AS (SELECT * FROM SET1)        -- SET1 accessed
SELECT * FROM SET2;                      -- SET2 projected

10/29/2013 10:43:26 AM

Suivez l'ordre dans lequel il doit être initialisé dans Expressions de table communes


Aditya ou autres, pouvez-vous joindre ou faire correspondre t2 avec t1 dans votre exemple, c'est-à-dire traduit dans mon code,

with t1 as (select * from AA where FIRSTNAME like 'Kermit'),
     t2 as (select * from BB B join t1 on t1.FIELD1 = B.FIELD1)

Je ne suis pas sûr si seulement WHERE est supporté pour la jointure, ou quelle approche de jointure est soutenue dans la 2ème entité WITH. Certains des exemples ont le WHERE A = B dans le corps de la sélection "ci-dessous" les clauses WITH.

L'erreur que je reçois suite à ces déclarations WITH est que les identifiants (noms de champs) dans B ne sont pas reconnus, dans le corps du reste du SQL. Donc, la syntaxe WITH semble fonctionner correctement, mais elle ne peut pas accéder aux résultats de t2.


la syntaxe correcte est -

with t1
as
(select * from tab1
where conditions...
),
t2
as
(select * from tab2
where conditions...
(you can access columns of t1 here as well)
)
select * from t1, t2
where t1.col1=t2.col2;

Vous pouvez le faire comme:

WITH abc AS( select
             FROM ...)
, XYZ AS(select
         From abc ....) /*This one uses "abc" multiple times*/
  Select 
  From XYZ....   /*using abc, XYZ multiple times*/




oracle