Jointure complète dans MySQL
Ce tutoriel vise à explorer comment effectuer une jointure complète ou une jointure externe complète dans MySQL.
Une jointure externe complète est utilisée pour fusionner ou combiner toutes les données de deux tables distinctes. Par exemple, considérons que nous avons deux tables nommées student_id
et student_name
avec une colonne commune.
Nous pouvons fusionner ces deux tables entièrement dans MySQL en faisant correspondre les valeurs de la colonne commune avec un UNION
, LEFT JOIN
et RIGHT JOIN
. Bien que ce processus semble compliqué à première vue, comprenons-le par étapes.
Avant de commencer, nous allons créer un jeu de données factice en créant une table student_details
avec quelques lignes.
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
Pour afficher les entrées dans les données, nous utilisons le code suivant.
SELECT * FROM student_details;
Production :
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
Nous avons besoin d’une autre table nommée student_marks
contenant les notes de chaque étudiant correspondant au stu_id
. Nous pouvons créer une telle table en utilisant la requête suivante.
-- create the table student_marks
CREATE TABLE student_marks(
stu_id int,
stu_marks int
);
-- insert rows to the table student_marks
INSERT INTO student_marks(stu_id,stu_marks)
VALUES(1,10),
(2,20),
(3,30),
(4,7),
(5,9),
(6,35),
(7,15);
Nous pouvons visualiser ce tableau à l’aide de la requête suivante.
SELECT * from student_marks;
Production :
stu_id stu_marks
1 10
2 20
3 30
4 7
5 9
6 35
7 15
Visons à faire une jointure externe complète sur les tables student_details
et student_marks
avec stu_id
comme colonne commune dans les deux tables.
Instruction FULL JOIN
dans MySQL
La syntaxe de base de la technique FULL OUTER JOIN
est la suivante.
SELECT * FROM table_1
LEFT JOIN table_2 ON table_1.id = table_2.id
UNION
SELECT * FROM table_1
RIGHT JOIN table_2 ON table_1.id = table_2.id
Comme on le voit dans la requête ci-dessus, nous visons à joindre les deux tables nommées table_1
et table_2
sur la base de la colonne id
commune à l’aide d’une jonction gauche
et d’une jonction droite
.
Nous pouvons utiliser la requête suivante pour résoudre notre problème avec les tables student_details
et student_marks
.
-- Full Join using UNION
SELECT * FROM student_details
LEFT JOIN student_marks ON student_details.stu_id = student_marks.stu_id
UNION
SELECT * FROM student_details
RIGHT JOIN student_marks ON student_details.stu_id = student_marks.stu_id
Comme on le voit dans le code ci-dessus, nous fusionnons les deux tables en question sur la base de la colonne stu_id
. Le résultat du code ci-dessus est le suivant.
stu_id stu_firstName stu_lastName stu_id stu_marks
1 Preet Sanghavi 1 10
2 Rich John 2 20
3 Veron Brow 3 30
4 Geo Jos 4 7
5 Hash Shah 5 9
6 Sachin Parker 6 35
7 David Miller 7 15
Comme on le voit dans le bloc de sortie, stu_marks
est correctement attribué à chaque étudiant en fonction de stu_id
après la jointure externe complète.
Remarque : Nous pouvons éviter d’avoir la colonne en double stu_id
en spécifiant les noms exacts des colonnes à joindre à l’aide de left join
et right join
. Cela créerait une jointure externe sans lignes en double à cause de la clause UNION
de notre requête.
Par conséquent, à l’aide de l’instruction UNION
et d’une left join
et d’une right join
sur deux tables différentes, nous pouvons efficacement créer une jointure externe complète dans MySQL sans aucun doublon.