T3.3 Fusion (par jointure) de tables⚓︎
Lorsqu'on travaille sur des données, il est fréquent de manipuler plusieurs tables dans lesquelles les mêmes données peuvent se trouver, avec différents champs. Par exemple voici une nouvelle table (à créer dans un fichier CSV, puis à importer pour manipulation):
Nom | Affiliation |
---|---|
Dark Vador | Empire |
Obi-Wan Kenobi | République |
R2-D2 | République |
Rey | Rébellion |
Han Solo | Rébellion |
Grand Moff Tarkin | Empire |
Leia Organa | Rébellion |
C-3PO | République |
Luke Skywalker | Rébellion |
Padmé Amidala | République |
Dark Sidious | Empire |
On peut donc vouloir les fusionner, c'est-à-dire construire une nouvelle table qui contient les données des deux tables, à condition qu'elles possèdent un champ commun, sur lequel on procède à l'opération de jointure. Ici le champ commun est 'Nom'
, et on obtiendrait la table suivante:
Nom | Espèce | Force | Statut | Affiliation |
---|---|---|---|---|
Dark Vador | Humain | oui | Sith | Empire |
Obi-Wan Kenobi | Humain | oui | Jedi | République |
R2-D2 | Droïde | non | Astromécano | République |
Rey | Humain | oui | Jedi | Rébellion |
Han Solo | Humain | non | Contrebandier | Rébellion |
Leia Organa | Humain | oui | Sénatrice | Rébellion |
C-3PO | Droïde | non | Protocole | République |
Luke Skywalker | Humain | oui | Jedi | Rébellion |
Padmé Amidala | Humain | non | Sénatrice | République |
Dark Sidious | Humain | oui | Sith | Empire |
On ne conserve bien évidemment que les enregistrements existants dans les deux tables.
Fusion par jointure
La fusion par jointure consiste à :
- créer une table vide qui accueillera les enregistrements contruits en fusionnant ceux des deux tables;
- parcourir les enregistrements de la première table;
- pour chacun des enregistrements de la deuxième table, regarder si les enregistrements ont la même valeur pour le champ commun;
- si c'est le cas, créer une copie de l'enregistrement de la première table, à laquelle on ajoute les données (champ: valeur) de la deuxième table.
Jointure de deux tables | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 |
|