Data & Facts

JOIN dans SQL: comment associer deux ou plusieurs tables

Dans ce tutoriel, nous vous montrons comment joindre plusieurs tables sur une même requête JOIN dans SQL.

On continue avec la même base de données des Étudiants ( Cette fois-ci, on va les appeler des élèves) Vue dans le précédent cours.

BDD

Extraire des information depuis une table avec SQL 

Nous pouvons obtenir toutes les données à partir d’une table comme suit (en utilisant la table Élève comme exemple:

SELECT * FROM "Eleve;

Essayons de récupérer les données de deux tables de la même manière

 
SELECT * FROM "Eleve", "Ayant reussi" ;

On peut extraire plus d’informations et préciser la demande grâce à l’instruction From et Where

Nous pouvons nommer les tables grâce à la clause FROM, mais de préciser les champs à extraire grâce à la clause Where.

élèves_id est la clé des données dans la table élève.

Les données des tables “Élève” et “ayant réussi” sont liées les unes aux autres. Il convient seulement de noter que si la note pour un élève donné dans nos données, ce grand tableau montre la note obtenue de l’élève pour chaque membre de la classe, mais la note obtenue par l’élève doit être interprétée comme une valeur numérique.

Syntaxe:

SELECT table1.nomcolonne1, table1.nomcolonne2, table2.nomcolonne3 FROM table1, table2

WHERE table1.nomcolonne = table2.nomcolonne ;

Dans la clause WHERE, le nom de la colonne représente les champs liés les uns aux autres par des clés étrangères. Dans le cas d’une table, il s’agit d’une clé primaire, dans le cas d’une autre table, il s’agit d’une clé étrangère.

L’instruction JOIN

Dans le langage SQL, il existe également une instruction JOIN dans SQL qui vous permet d’associer des tables. À l’aide des instructions JOIN dans SQL, différentes tables peuvent être combinées de manière relativement similaire à l’instruction FROM … WHERE. L’instruction FROM est aussi appelée JOIN par défaut (JOIN implicite), c’est le moyen le plus simple de joindre des données et est tout à fait suffisant pour des tables beaucoup plus grandes que la nôtre. Il existe différentes opinions quand il s’agit de savoir : si les clauses FROM…WHERE sont plus pertinentes ou les clauses JOIN sont plus pertinentes.

Il existe également un certain nombre de variantes de JOIN explicites, telles que CROSS JOIN, INNER JOIN (si non spécifié, JOIN signifie INNER JOIN), LEFT OUTER JOIN, RIGHT OUTER JOIN

SELECT tableau1.colonne1, tableau2.colonne2...

DE table1

JOIN table2

ON table1.common_field = table2.common_field ;

Passons à notre base de données. Extrayons maintenant la note de chaque élève de la base de données avec le nom du coach.

SELECT prénom, nom, note_obtenue FROM "Eleve", "Ayant reussi" WHERE relation_avec_coach= 'coach'

ET "ayantreussi".student_id = "".ayantreussi;

ET "Ayantreussi".student_id = "Élève".Ayant reussi;

Si nous ne spécifions pas dans cette requête que relation_avec_coach de = ‘coach des élèves’, nous obtiendrions tous les élèves ayant bénéficié des conseils d’un coach du et la note serait affichée pour chacun d’eux.

Comment joindre plusieurs tables sur une même requête SQL ?

L’instruction JOIN dans SQL vous permet de combiner des interrogations (extractions d’informations) de deux tables ou plus dans une base de données relationnelle. Dans Structured Query Language (SQL), il existe trois types de JOIN : interne, externe et croisé. Dans des cas particuliers, une table peut se joindre elle-même, produisant une SELF-JOIN.

L’opération JOIN ou combinaison vous permet d’afficher les colonnes de plusieurs tables comme s’il s’agissait d’une table unique, en combinant les informations extraites associés les uns avec les autres à l’aide de clés étrangères.

Il existe plusieurs types d’instruction JOIN avec la syntaxe ANSI, qui peuvent être divisées en deux groupes – INNER JOIN et OUTER JOIN. 

INNER JOIN renvoie uniquement les lignes qui existent dans les deux tables, alors OUTER JOIN renvoie toutes les lignes d’une table (selon le type de JOIN à utiliser) et les lignes d’une autre du tableau qui correspondent aux conditions données. Ensuite, chaque espèce sera examinée plus en détail.

INNER JOIN

Ce type renvoie des données qui correspondent à la fois à gauche et à droite dans la table. Un exemple est donné dans la requête.

SELECT Eleve.id, Eleve.Nomdefamille + ’ ’ +
eleve.Nom AS Nom, eleve, Rang DE Eleve
INNER JOIN Langue ON Eleve.id = Langue.Eleve WHERE
eleve Date de naissance > '2006-04-05';
INNER JOIN SQL
INNER JOIN SQL

LEFT JOIN

Renvoie toutes les lignes du tableau de gauche, que les lignes correspondent ou non à celles données.

Avec les conditions ou non et les lignes de la table de droite qui correspondent aux conditions données.

LEFT JOIN SQL
SELECT Eleve.id, Eleve.Nomdefamille + ’ ’ +
eleve.Nom AS Nom, eleve, Rang DE Eleve
LEFT JOIN Langue ON Eleve.id = Langue.Eleve WHERE
élève Date de naissance > '2006-04-05';

RIGHT JOIN 

Renvoie toutes les lignes de la table de droite, que les lignes correspondent ou non

Avec les conditions données ou non et les lignes du tableau de gauche qui correspondent aux conditions données avec conditions.

SELECT Eleve.id, Eleve.Nomdefamille + ’ ’ +
eleve.Nom AS Nom, eleve, Rang DE Eleve
RIGHT JOIN Langue ON Eleve.id = Langue.Eleve WHERE
eleve Date de naissance > '2006-04-05';
RIGHT JOIN SQL

Full OUTER JOIN 

Le type JOIN OUTER donné renvoie des données indépendamment du fait que les valeurs correspondent à une autre table avec des données. 

Un exemple est donné dans la requête:

SELECT Eleve.id, Eleve.Nomdefamille + ’ ’ +
eleve.Nom AS Nom, eleve, Rang DE l'Eleve
Full OUTER JOIN Langue ON Eleve.id = Langue.Eleve WHERE
eleve Date de naissance > '2006-04-05';
Full OUTER JOIN 

JOINT CROISÉ

Ce type JOIN renvoie une table avec potentiellement plusieurs lignes. Le nombre de lignes dans le résultat est égal

avec le nombre de lignes du premier tableau répété avec le nombre de lignes du second tableau. Chaque rangée est la première et la deuxième combinaison de tableaux.

SELECT Eleve.id, Eleve.Nomdefamille + ’ ’ +
Eleve.Nom AS Nom, Eleve, Rang DE LELEVE
CROSS JOIN Langue;

Autres articles

Entrepôt de Données : Exercices Corrigés
Les entrepôts de données sont des systèmes de gestion des...
Read more
Comprendre le Coefficient de Variation : Étude...
Le coefficient de variation (CV) est un outil statistique puissant...
Read more
Tutoriel de Statistique Descriptive : Quelques Examens...
La statistique descriptive est une branche fondamentale des statistiques qui...
Read more

Laisser un commentaire

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