Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Clause CONNECT BY

Mode de mise au point
Clause CONNECT BY - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

La clause CONNECT BY spécifie la relation entre les lignes d’une hiérarchie. Vous pouvez utiliser CONNECT BY pour sélectionner des lignes dans un ordre hiérarchique en attachant la table à elle-même et en traitant les données hiérarchiques. Par exemple, vous pouvez l’utiliser pour parcourir de manière récursive un organigramme et répertorier des données.

Les requêtes hiérarchiques sont traitées dans l’ordre suivant :

  1. Si la clause FROM comporte une jointure, elle est traitée en premier.

  2. La clause CONNECT BY est évaluée.

  3. La clause WHERE est évaluée.

Syntaxe

[START WITH start_with_conditions] CONNECT BY connect_by_conditions
Note

Bien que START et CONNECT ne soient pas des mots réservés, utilisez des identificateurs délimités (guillemets doubles) ou AS si vous utilisez START et CONNECT comme alias de table dans votre requête, afin d’éviter tout échec lors de l’exécution.

SELECT COUNT(*) FROM Employee "start" CONNECT BY PRIOR id = manager_id START WITH name = 'John'
SELECT COUNT(*) FROM Employee AS start CONNECT BY PRIOR id = manager_id START WITH name = 'John'

Paramètres

start_with_conditions

Conditions qui spécifient la ou les lignes racines de la hiérarchie

connect_by_conditions

Conditions qui spécifient la relation entre les lignes parents et les lignes enfants de la hiérarchie. Au moins une condition doit être qualifiée à l’aide de l’opérateur unaire utilisé pour faire référence à la ligne parent.

PRIOR column = expression -- or expression > PRIOR column

Opérateurs

Vous pouvez utiliser les opérateurs suivants dans une requête CONNECT BY.

LEVEL

Pseudocolonne qui renvoie le niveau de ligne actuel dans la hiérarchie. Renvoie 1 pour la ligne racine, 2 pour l’enfant de la ligne racine, etc.

PRIOR

Opérateur unaire qui évalue l’expression pour la ligne parent de la ligne actuelle dans la hiérarchie.

Exemples

Voici un exemple de requête CONNECT BY qui renvoie le nombre d’employés qui relèvent directement ou indirectement de John, avec 4 niveaux maximum.

SELECT id, name, manager_id FROM employee WHERE LEVEL < 4 START WITH name = 'John' CONNECT BY PRIOR id = manager_id;

Voici le résultat de la requête.

id name manager_id ------+----------+-------------- 101 John 100 102 Jorge 101 103 Kwaku 101 110 Liu 101 201 Sofía 102 106 Mateo 102 110 Nikki 103 104 Paulo 103 105 Richard 103 120 Saanvi 104 200 Shirley 104 205 Zhang 104

Définition de table pour cet exemple :

CREATE TABLE employee ( id INT, name VARCHAR(20), manager_id INT );

Voici les lignes insérées dans la table.

INSERT INTO employee(id, name, manager_id) VALUES (100, 'Carlos', null), (101, 'John', 100), (102, 'Jorge', 101), (103, 'Kwaku', 101), (110, 'Liu', 101), (106, 'Mateo', 102), (110, 'Nikki', 103), (104, 'Paulo', 103), (105, 'Richard', 103), (120, 'Saanvi', 104), (200, 'Shirley', 104), (201, 'Sofía', 102), (205, 'Zhang', 104);

Voici un organigramme du service de John.

Organigramme du service de John.

Rubrique suivante :

Exemples de sous-requête

Rubrique précédente :

Exemples avec ORDER BY

Sur cette page

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.