Articles

SQLite Self-Join

Résumé: dans ce tutoriel, vous découvrirez un type spécial de jointure appelé SQLite self-join qui vous permet de joindre la table à elle-même.

Notez que vous devez vous familiariser avec les clauses INNER JOIN et LEFT JOIN avant d’aller de l’avant avec ce tutoriel.

Introduction à l’auto-jointure SQLite

L’auto-jointure est un type spécial de jointure qui vous permet de joindre une table à elle-même en utilisant la clause LEFT JOIN ou INNER JOIN. Vous utilisez l’auto-jointure pour créer un jeu de résultats qui relie les lignes aux autres lignes de la même table.

Comme vous ne pouvez pas faire référence à la même table plus d’une fois dans une requête, vous devez utiliser un alias de table pour attribuer à la table un nom différent lorsque vous utilisez l’auto-jointure.

L’auto-jointure compare les valeurs de colonnes identiques ou différentes dans la même table. Une seule table est impliquée dans l’auto-jointure.

Vous utilisez souvent l’auto-jointure pour interroger la relation parents / enfants stockée dans une table ou pour obtenir des totaux en cours d’exécution.

Exemples d’auto-jointure SQLite

Nous utiliserons la table employees dans l’exemple de base de données pour la démonstration.

La table employees stocke non seulement les données des employés, mais également les données organisationnelles. La colonne ReportsTo spécifie la relation hiérarchique entre les employés.

Si un employé relève d’un gestionnaire, la valeur de la colonne ReportsTo de la ligne de l’employé est égale à la valeur de la colonne EmployeeId de la ligne du gestionnaire. Dans le cas où un employé ne relève de personne, la colonne ReportsTo est NULL.

Pour obtenir les informations sur qui est le rapport direct de qui, vous utilisez la déclaration suivante:

Essayez-le

L’instruction utilisait la clause INNER JOIN pour rejoindre le employees à lui-même. La table employees a deux rôles: les employés et les gestionnaires.

Parce que nous avons utilisé la clause INNER JOIN pour joindre la table employees à elle-même, le jeu de résultats n’a pas la ligne dont la colonne manager contient une valeur NULL.

Notez que l’opérateur de concaténation ||concatène plusieurs chaînes en une seule chaîne. Dans l’exemple, nous utilisons l’opérateur de concaténation à partir des noms complets des employés en concaténant le prénom, l’espace et le nom de famille.

Si vous souhaitez interroger le PDG qui ne relève de personne, vous devez changer la clause INNER JOIN en clause LEFT JOIN dans la requête ci-dessus.

Andrew Adams est le PDG car il ne signale personne.

Vous pouvez utiliser la technique d’auto-jointure pour trouver les employés situés dans la même ville que la requête suivante :

Essayez-le

La condition de jointure a deux expressions:

  • e1.city = e2.city pour s’assurer que les deux employés situés dans la même ville
  • e.firstname <> e2.firstname AND e1.lastname <> e2.lastname pour s’assurer que e1 et e2 ne sont pas le même employé avec l’hypothèse qu’il n’y a pas d’employés qui ont le même prénom et le même nom.

Dans ce tutoriel, nous vous avons montré comment utiliser la technique d’auto-jointure SQLite pour joindre une table à elle-même.

  • Ce tutoriel a-t-il été utile?
  • Ouinon

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *