MariaDB JOIN : fusionner des enregistrements de plusieurs tables
Dans un système de gestion de bases de données relationnelles, il est possible de comparer des enregistrements dans différentes tables. Ainsi, on peut établir des connexions et extraire des valeurs correspondantes de deux tables. Cette tâche est réalisée dans MariaDB par JOIN
. Cette commande est utilisée en combinaison avec SELECT
et peut être divisée en plusieurs catégories. De plus, nous vous présentons également en détail INNER JOIN
, LEFT JOIN
et RIGHT JOIN
.
MariaDB JOIN
: syntaxe et fonctionnement
Pour que vous puissiez avoir une vue d’ensemble des différentes instructions JOIN
dans MariaDB, nous vous montrons d’abord la syntaxe de base de l’instruction. Celle-ci se présente comme suit pour INNER JOIN
:
SELECT colonne(s)
FROM table_1
INNER JOIN table_2
ON table_1.colonne = table_2.colonne;
sqlAvec SELECT
, vous choisissez la colonne (ou les colonnes) à inclure. Au lieu du caractère de remplacement « table_1 », vous enregistrez votre première table et au lieu de « table_2 », la deuxième table à relier à la première. Avec INNER JOIN
, toutes les lignes de la première table sont comparées à toutes les lignes de la deuxième table. Les résultats qui concordent (c’est-à-dire qui sont présents dans les deux tables) sont alors combinés et affichés dans une table finale. En revanche, les entrées qui ne correspondent pas ne sont pas prises en compte.
Exemple de INNER JOIN
dans MariaDB
Pour illustrer le fonctionnement de INNER JOIN
dans MariaDB, nous vous présentons un exemple simple. Pour cela, nous partons d’une base de données dans laquelle se trouvent deux tables. La première table s’appelle « Clients » et la seconde « Commandes ». Nous créons la liste « Clients » avec MariaDB CREATE TABLE
. Elle contient les colonnes « Client », « Nom », « Prénom », « Ville » et « Date ». Le code se présente comme suit :
CREATE TABLE Clients (
Client INT PRIMARY KEY,
Nom VARCHAR(50),
Prénom VARCHAR(50),
Ville VARCHAR(50),
Date DATE
);
sqlNous allons maintenant remplir cette table avec quelques valeurs. Pour cela, nous utilisons INSERT INTO
:
INSERT INTO Clients VALUES
(1, 'Pasquier', 'Marina', 'Paris', '2022-07-19'),
(2, 'Carmon', 'Alex', 'Lille', '2023-03-03'),
(3, 'Mailler', 'Paul', 'Lille', '2023-07-09'),
(4, 'Rodrigo', 'Sarah', 'Marseille', '2023-12-10'),
(5, 'Barton', 'Lisa', 'Paris', '2024-01-17') ;
sqlNous créons ensuite la table « Commandes ». Celle-ci contient les colonnes « Numéro », « Article », « Nom » et « Date ». Le code ressemble à ceci :
CREATE TABLE Commandes (
Numéro INT AUTO_INCREMENT PRIMARY KEY,
Article INT,
Nom VARCHAR(50),
Date DATE
);
sqlNous remplissons également cette table avec des exemples de valeurs :
INSERT INTO Commandes VALUES
(101, 247, 'Müller', '2024-02-20'),
(102, 332, 'Mailler', '2024-03-03'),
(103, 247, 'Dujardin', '2024-03-09'),
(104, 191, 'Carmon', '2024-03-17'),
(105, 499, 'Brandt', '2024-03-17');
sqlNous utilisons maintenant INNER JOIN
pour MariaDB afin de filtrer les clients qui apparaissent dans la liste des clients et ont passé une commande, listée dans la table « Commandes ». Le code correspondant ressemble à ceci :
SELECT Clients.Client, Clients.Nom, Commandes.Numéro, Commandes.Article;
FROM Clients
INNER JOIN Commandes
ON Clients.Nom = Commandes.Nom;
sqlNous nous concentrons ici sur le nom de famille dans la liste des clients et sur le nom du client dans les commandes. Si ces valeurs correspondent, elles sont reprises. Comme les clients Mailler et Carmon apparaissent dans les deux tables, la sortie correspondante se présente ainsi :
Client | Nom | Numéro | Article |
---|---|---|---|
3 | Mailler | 102 | 332 |
2 | Carmon | 104 | 191 |
LEFT JOIN
LEFT JOIN
dans MariaDB fonctionne selon un principe similaire et utilise également une syntaxe presque identique. Cependant, contrairement à INNER JOIN
, dans ce cas, tous les enregistrements de la première table ou de la table de gauche (dans notre exemple « Clients ») sont affichés et seuls les enregistrements correspondants de la deuxième table ou de la table de droite (« Commandes ») sont inclus. S’il n’y a pas de correspondance dans la deuxième table, la valeur correspondante est indiquée par NULL. Pour notre exemple ci-dessus, la commande ressemble à ceci :
SELECT Clients.Nom, Commandes.Article;
FROM Clients
LEFT JOIN Commandes
ON Clients.Nom = Commandes.Nom;
sqlNous obtenons ainsi le résultat suivant :
Nom | Article |
---|---|
Pasquier | NULL |
Carmon | 191 |
Mailler | 332 |
Henry | NULL |
Barton | NULL |
RIGHT JOIN
RIGHT JOIN
fonctionne exactement à l’inverse dans MariaDB. Cette fois-ci, les données de la deuxième table ou de la table de droite sont reliées aux valeurs correspondantes de la première table ou de la table de gauche. S’il n’y a pas de correspondance, la valeur reste NULL. Voici le code :
SELECT Clients.Nom, Commandes.Article;
FROM Clients
RIGHT JOIN Commandes
ON Clients.Nom = Commandes.Nom;
sqlLa sortie est la suivante :
Nom | Article |
---|---|
NULL | 247 |
Mailler | 332 |
NULL | 247 |
Carmon | 191 |
NULL | 499 |
Dans notre Digital Guide, vous trouverez de nombreuses instructions et explications utiles sur le thème de MariaDB. Vous y trouverez par exemple une comparaison entre MariaDB et MySQL et un tutoriel sur l’installation de MariaDB.