Auto-jointure SQL

Auto Jointure Sql



L’une des fonctionnalités les plus connues des bases de données relationnelles concerne les jointures. Les jointures sont l'une des fonctionnalités les plus puissantes et les plus complexes des bases de données relationnelles. Ils permettent une modularité étendue et des relations très complexes entre les tables de bases de données sans compromettre les performances.

Cependant, il existe un type de jointure dans SQL qui a tendance à passer inaperçu, appelé auto-jointure.

En SQL, une auto-jointure est une technique puissante qui nous permet de combiner les lignes d'une même table en fonction d'une colonne associée au sein de la même table.







Contrairement aux autres types de jointures en SQL où nous récupérons les données de plusieurs tables, une auto-jointure fonctionne sur une seule table.



Vous vous demandez peut-être pourquoi ai-je besoin d’une auto-jointure alors que je peux rechercher les données à partir de la table elle-même ? Bien que cela puisse être vrai, une auto-jointure peut vous aider dans les tâches lorsque vous devez effectuer des requêtes de données récursives ou trouver des données hiérarchiques.



Essentiellement, une auto-jointure joue un rôle fondamental lorsque vous devez comparer les lignes d’une même table.





Rejoignez-nous dans cet article pour explorer ce que sont les auto-jointures, comment elles fonctionnent et comment nous pouvons les utiliser dans une table SQL.

REMARQUE : Avant de plonger dans le vif du sujet, nous allons configurer un tableau de base à des fins de démonstration. Cependant, vous avez envie d'utiliser n'importe quel ensemble de données pris en charge.



Exemples de données

Les requêtes suivantes créent une table de base contenant des informations sur le produit et insèrent les exemples d'enregistrements dans la table. Cela nous permet de démontrer comment travailler avec les auto-jointures en SQL.

CRÉER UNE TABLE Produits (
product_id INT CLÉ PRIMAIRE,
nom_produit VARCHAR(255) NON NULL,
parent_id INT
);

Ajoutez 10 exemples d’enregistrements dans le tableau.

INSERT INTO Produits (product_id, product_name, parent_id) VALEURS
(1, 'Électronique', NULL),
(2, 'Smartphones', 1),
(3, 'Ordinateurs portables', 1),
(4, 'iPhone 13', 2),
(5, « Samsung Galaxy S21 », 2),
(6, 'MacBook Pro', 3),
(7, « Dell XPS 15 », 3),
(8, 'Accessoires', NULL),
(9, 'Cas de téléphone', 8),
(10, « Sacs pour ordinateurs portables », 8 );

Le tableau résultant est le suivant :

Exemple 1 : auto-adhésion de base

Commençons par une auto-adhésion de base. Par exemple, nous pouvons utiliser une simple auto-jointure pour récupérer la relation parent-enfant de la même table.

Par exemple, nous pouvons l'utiliser pour rechercher tous les produits et leurs produits parents correspondants. Nous pouvons exécuter une requête comme suit :

SELECT c.product_name AS enfant_product, p.product_name AS parent_product
DE Produits c
LEFT JOIN Produits p ON c.parent_id = p.product_id;

Dans l'exemple de requête donné, nous utilisons « c » comme alias pour la table de produits qui représente les produits enfants.

Nous créons également l'alias « p » pour la table des produits afin de représenter les produits parents.

Dans l'étape suivante, nous utilisons un SQL LEFT JOIN de base pour garantir que les produits de niveau supérieur sont inclus dans le résultat.

Enfin, nous utilisons la clause ON pour créer une relation entre les enregistrements enfant et parent à l'aide des colonnes « parent_id » et « product_id ».

Le tableau résultant est le suivant :

Vous remarquerez que les produits parents n'ont pas de lien supérieur car ils se situent au sommet de la hiérarchie, également appelés éléments racine.

Exemple 2 : Récupérer une donnée hiérarchique

L'un des rôles les plus fondamentaux d'une auto-jointure est de récupérer des données hiérarchiques. Par exemple, supposons que nous souhaitions récupérer tous les produits enfants dont le produit est égal à « Accessoires ». Nous pouvons exécuter la requête en utilisant une auto-jointure comme suit :

SELECT c.nom_produit AS produit_enfant
DE Produits c
REJOINDRE Produits p ON c.parent_id = p.product_id
OÙ p.product_name = 'Accessoires';

Dans ce cas, nous utilisons un JOIN pour combiner la table products avec elle-même, puis utilisons la clause WHERE pour filtrer les résultats souhaités.

Conclusion

Dans ce didacticiel, nous avons exploré ce qu'est une auto-jointure, comment elle fonctionne et comment l'utiliser dans la table SQL pour récupérer des données hiérarchiques ou effectuer des requêtes récursives.