

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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.

# Clause CONNECT BY
<a name="r_CONNECT_BY_clause"></a>

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.

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

1. La clause WHERE est évaluée.

## Syntaxe
<a name="r_CONNECT_BY_clause-synopsis"></a>

```
[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'
```

## Parameters
<a name="r_CONNECT_BY_parameters"></a>

 *start\$1with\$1conditions*   
Conditions qui spécifient la ou les lignes racines de la hiérarchie

 *connect\$1by\$1conditions*   
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
<a name="r_CONNECT_BY_operators"></a>

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
<a name="r_CONNECT_BY_example"></a>

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.\]](http://docs.aws.amazon.com/fr_fr/redshift/latest/dg/images/org-chart.png)
