la clause SEARCH dans un SELECT récursif
Par admin le dimanche 21 novembre 2021, 12:01 - PostgreSQL - Lien permanent
Toujours dans les nouvelles syntaxes apparues dans la release 14 de PostgreSQL autour de la récursivité et après avoir vu la clause CYCLE dans un précédent article, nous allons étudier la clause SEARCH
.
La clause SEARCH
est une clause optionnelle que l'on peut ajouter à un SELECT
récursif pour spécifier une condition de recherche. Elle permet de filtrer les résultats de la requête en utilisant une condition supplémentaire.
L'objectif de la clause SEARCH
est de permettre de limiter les résultats d'un SELECT
récursif. Elle permet de spécifier une condition qui doit être vérifiée pour que les résultats soient inclus dans la requête.
Voici un exemple concret d'utilisation de la clause SEARCH
dans un SELECT
récursif :
Supposons que nous ayons une table "employees
" qui contient les informations sur les employés d'une entreprise. Cette table contient une colonne "manager_id
" qui indique le manager de chaque employé.
Nous pouvons utiliser un SELECT
récursif pour récupérer tous les employés qui sont gérés par un certain manager. Nous pouvons également utiliser la clause SEARCH
pour filtrer les résultats afin de ne récupérer que les employés qui ont un certain titre.
Voici un exemple de requête qui utilise la clause SEARCH
:
WITH RECURSIVE employee_tree AS ( SELECT id, name, manager_id, title FROM employees WHERE id = 1 UNION ALL SELECT e.id, e.name, e.manager_id, e.title FROM employees e JOIN employee_tree et ON e.manager_id = et.id WHERE e.title SEARCH 'Manager' ) SELECT * FROM employee_tree;
Dans cet exemple, nous utilisons la clause SEARCH
pour filtrer les résultats de la requête pour ne récupérer que les employés qui ont un titre qui contient le mot "Manager
". Cette clause est ajoutée à la deuxième partie de la requête SELECT
récursive.
En conclusion, la clause SEARCH
est une option utile pour limiter les résultats d'un SELECT
récursif en utilisant une condition supplémentaire. Elle permet de filtrer les résultats de la requête en fonction de critères spécifiques, ce qui peut être très utile dans les requêtes complexes sur des hiérarchies ou des arbres de données.