With Clause
Dans PostgreSQL, la requête WITH permet d'écrire des instructions auxiliaires à utiliser dans une requête plus importante. Elle permet de décomposer des requêtes complexes et volumineuses en formes plus simples, facilement lisibles. Ces instructions, souvent appelées Common Table Expressions ou CTE, peuvent être considérées comme définissant des tables temporaires qui n'existent que pour une seule requête.
La requête WITH étant une requête CTE, elle est particulièrement utile lorsque la sous-requête est exécutée plusieurs fois. Elle est également utile à la place des tables temporaires. Elle calcule l'agrégation une fois et nous permet de la référencer par son nom (qui peut être multiple) dans les requêtes.
La clause WITH doit être définie avant d'être utilisée dans la requête.
Syntaxe
La syntaxe de base de la requête WITH est la suivante :
WITH
name_for_summary_data AS (
SELECT Statement)
SELECT columns
FROM name_for_summary_data
WHERE conditions <=> (
SELECT column
FROM name_for_summary_data)
[ORDER BY columns]
Où name_for_summary_data est le nom donné à la clause WITH. Le name_for_summary_data peut être le même que celui d'une table existante et sera prioritaire. Vous pouvez utiliser des instructions modifiant les données (INSERT, UPDATE ou DELETE) dans WITH. Cela vous permet d'effectuer plusieurs opérations différentes dans la même requête.
Recursive WITH
Les requêtes WITH récursives ou hiérarchiques sont une forme d'ETC où un ETC peut faire référence à lui-même, c'est-à-dire qu'une requête WITH peut faire référence à sa propre sortie, d'où le nom de récursif.
Exemple
Besoin d'aide ?
Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !