logo oujood
🔍

Comment utiliser les self joins en SQL

OUJOOD.COM

Tutoriel SQL Self Join: Définition et utilisation

Un self join est une opération de jointure qui combine les enregistrements d'une table avec elle-même. Il est utilisé lorsque les données d'une table sont liées à elles-mêmes d'une manière ou d'une autre.

Par exemple, une table d'employés peut avoir une colonne manager_id qui indique l'ID de l'employé qui supervise un autre employé. Dans ce cas, un self join peut être utilisé pour obtenir une liste de tous les employés et de leurs superviseurs.

Syntaxe

 
SELECT
column_name(s)
FROM
table_name AS alias
WHERE
condition;

Exemples pratiques d'utilisation

Voici quelques exemples pratiques d'utilisation d'un self join :

Obtenir une liste d'employés et de leurs superviseurs :

Exemple :     📋 Copier le code

 
SELECT
employee_id,
employee_name,
manager_id,
manager_name
FROM
employees AS e
INNER JOIN
employees AS m
ON
e.manager_id = m.employee_id;

Obtenir une liste de tous les produits et de leurs catégories :

Exemple :     📋 Copier le code

 
SELECT
product_id,
product_name,
category_id,
category_name
FROM
products
INNER JOIN
categories
ON
products.category_id = categories.category_id;

Obtenir une liste de tous les utilisateurs et de leurs amis :

Exemple :     📋 Copier le code

 
SELECT
user_id,
user_name,
friend_id,
friend_name
FROM
users
INNER JOIN
users AS f
ON
users.friend_id = f.user_id;

Astuces et conseils d'utilisation

  • Utilisez un alias pour chaque table impliquée dans le self join. Cela permet d'éviter les confusions entre les colonnes du même nom.
  • Utilisez une clause WHERE pour spécifier la condition de jointure. La condition doit comparer les valeurs d'une colonne dans une table avec les valeurs d'une colonne dans l'autre table.
  • Utilisez des alias de colonne pour désigner les colonnes provenant de différentes tables. Cela permet d'éviter les confusions entre les colonnes du même nom.

Comment l'utiliser

Pour utiliser un self join, procédez comme suit :

  1. Créez une table avec des données qui se rejoignent d'une manière ou d'une autre.
  2. Écrivez une requête SQL qui utilise la syntaxe d'un self join.
  3. Exécutez la requête pour obtenir les résultats souhaités.

Exemple

Voici un exemple de la façon d'utiliser un self join pour obtenir une liste d'employés et de leurs superviseurs :

Exemple :     📋 Copier le code

 
-- Créez la table employees
CREATE TABLE employees (
employee_id INT NOT NULL AUTO_INCREMENT,
employee_name VARCHAR(255) NOT NULL,
manager_id INT,
PRIMARY KEY (employee_id)
);

-- Insérez des données dans la table employees
INSERT INTO employees (employee_name, manager_id) VALUES
('John Doe', NULL),
('Jane Doe', 1),
('Bill Smith', 2),
('Mary Jones', 3);

-- Écrivez la requête SQL
SELECT
employee_id,
employee_name,
manager_id,
manager_name
FROM
employees AS e
INNER JOIN
employees AS m
ON
e.manager_id = m.employee_id;

-- Exécutez la requête
SELECT * FROM employees;

Cette requête renvoie le résultat suivant :

employee_id employee_name manager_id manager_name
1 John Doe NULL NULL
2 Jane Doe 1 John Doe
3 Bill Smith 2 Jane Doe
4 Mary Jones 3 Bill Smith

Dans cet exemple, la table employees a une colonne manager_id qui indique l'ID de l'employé qui supervise un autre employé. La requête SQL utilise un self join pour combiner les enregistrements de la table employees avec elle-même.

La clause FROM spécifie que la requête utilise deux tables : employees et employees. La table employees est aliasée e dans la requête.

La clause INNER JOIN spécifie que la requête utilise une jointure interne. La condition de jointure est e.manager_id = m.employee_id. Cette condition signifie que la valeur de la colonne manager_id dans la table e doit être égale à la valeur de la colonne employee_id dans la table m.

La clause SELECT spécifie les colonnes qui doivent être retournées par la requête.

La clause WHERE est facultative. Elle peut être utilisée pour spécifier des conditions supplémentaires pour filtrer les résultats de la requête.

Conclusion

Les self joins sont un outil puissant qui peut être utilisé pour obtenir des résultats complexes à partir de données. Ils sont utiles lorsque les données d'une table sont liées à elles-mêmes d'une manière ou d'une autre.

Voici quelques autres exemples de la façon dont les self joins peuvent être utilisés :

  • Obtenir une liste d'employés et de leurs collègues
  • Obtenir une liste de tous les produits et de leurs catégories parents
  • Obtenir une liste de tous les utilisateurs et de leurs groupes

Avec un peu de pratique, vous serez en mesure d'utiliser les self joins pour résoudre une variété de problèmes.