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 villee.firstname <> e2.firstname AND e1.lastname <> e2.lastname
pour s’assurer quee1
ete2
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