Merci, par contre j'ai un peu de mal avec les WITH, c'est la première fois que j'en vois. Tu aurais un lien vers un tuto parce que du coup je sais même pas dans quelle sous-rubrique chercher !! :oops:
Version imprimable
Merci, par contre j'ai un peu de mal avec les WITH, c'est la première fois que j'en vois. Tu aurais un lien vers un tuto parce que du coup je sais même pas dans quelle sous-rubrique chercher !! :oops:
Salut !
Est équivalent à mettre cette "vue" directement dans le FROM :Code:
1
2
3
4 WITH t AS (SELECT ...) SELECT * FROM t ...
Tu peux définir plusieurs alias en les séparant par des virgules :Code:
1
2
3 SELECT * FROM (SELECT ...) t
Plusieurs intérêts :Code:
1
2
3
4
5
6 WITH t AS (SELECT ...), u AS (SELECT ...) SELECT * FROM t JOIN u...
- Certains trouvent ça plus lisible (dont moi :P)
- Quand tu utilises en suite la "vue" définie plusieurs fois, Oracle peut te créer une table temporaire histoire de ne pas avoir à réexécuter à chaque fois (ce qu'il ne fais pas si tu répètes la même chose plusieurs fois dans le FROM) => On appelle ça d'ailleurs subquery factoring
- A partir de 11g (je sais plus quelle release), tu peux faire des requêtes Récursive en conformité avec la norme SQL
Voilà :)
Merci beaucoup !!
C'est tout compris maintenant :)
Juste pour compléter, c'est très souvent utilisé ici avec des SELECT ... FROM DUAL UNION ALL ... qui permettent d'émuler une table facilement sans avoir à la créer, et en séparant proprement le sql pertinent de celui qui sert à émuler la table.