Exemple : Créer un rapport CSV depuis plusieurs tables
Cet exemple montre comment joindre plusieurs tables de base de données afin d'extraire des données dans un seul rapport en format CSV. La base de données utilisée dans cet exemple est appelée Nanonull.sqlite et est disponible dans le chemin suivant : <Documents>\Altova\MapForce2025\MapForceExamples\Tutorial\. Cette base de données stocke des informations à propos d'un commerce fictif (comprenant des commandes, des produits, des utilisateurs et leurs adresses). Comme cela est souvent le cas avec des base de données relationnelles, l'information est normalisée et distribuée sur plusieurs tables. Par exemple, la table users stocke des données personnelles d'utilisateur (qui contiennent le prénom, le nom de famille et l'e-mail). La base de donnée stocke également des informations concernant des produits commandés par les utilisateurs, dans deux tables différentes : orders (qui inclut l'ID unique de la commande et la date à laquelle elle a été passée) et orderedproducts (qui inclut une liste de produits commandés, et leurs quantités). De plus, les noms des produits eux-mêmes sont stockés dans une table séparée appelée products.
Le but de cet exemple est de produire un rapport sur la base des données extraites depuis des tables variées, afin de montrer clairement qui a commandé certains produits, quand et en quelles quantités. Pour atteindre l'objectif du mappage, suivre les étapes suivantes :
1.Dans le menu Insérer, cliquer sur Base de données.
2.Lorsque vous êtes invité à choisir un type de base de données, cliquer sur SQLite, puis cliquer sur Suivant.
3.Chercher la base de données Nanonull.sqlite mentionnée ci-dessus et cliquer sur Se connecter.
4.Sur invitation, choisir les tables orderedproducts, orders, products, et users, et cliquer sur OK.
5.Ajouter un composant Join au mappage et créer quatre items nodes/rows en cliquant sur la touche Ajouter entrée ( ).
6.Connecter les quatre tables depuis le composant de base de données dans les items entrée correspondants du composant Join.
Note : | Dans un autre scénario, vous pouvez connecter la table orderedproducts au composant Join, ensuite la table orders (celle qui est imbriquée en-dessous, pas celle se trouvant au même niveau), etc. afin que toutes les tables jointes sont imbriquées sous la même table "racine", voir aussi Gérer des relations de base de données. Le résultat de mappage serait le même que si vous joignez les tables de cette manière. La différence est que dans cet exemple, les conditions join sont créées manuellement, alors que dans le scénario alternatif les conditions join sont créées automatiquement par MapForce. Pour consulter un exemple de jointure des tables sans devoir définir des conditions join manuellement, voir Exemple: Joindre des tables en mode SQL. Un autre mappage où toutes les tables jointes se trouvent sous la même table "racine" est disponible dans le chemin suivant : <Documents>\Altova\MapForce2025\MapForceExamples\DB_Denormalize.mfd. |
Dans cet exemple, les tables connectées au composant Join sont classées dans l'ordre suivant :
1.orderedproducts
2.orders
3.products
4.users
Cet ordre touche la manière dont les structures respectives sot affichées dans le dialogue "Définir une condition Join", lorsque vous cliquez sur la touche Définir la Condition Join ( ). Concrètement, la première table (orderedproducts) apparaît par défaut sous Structure 1, et la table juste après (orders) apparaît sous Structure 2.
Pour définir la première condition join, cliquer sur l'item order_id dans le volet gauche et l'item id dans le volet de droite. À présent, les champs orderedproducts.order_id et orders.id. sont jumelés :
Jusqu'à présent, seules deux tables ont été jointes. Afin de définir des conditions join qui impliquent une troisième table, sélectionner la table désirée depuis la liste déroulante disponible au-dessus du volet de droite. Dans ce cas, le panneau de gauche affiche toutes les tables qui se produisent avant dans le composant Join. Par exemple, si vous choisissez products dans le côté droit, le volet de gauche affiche orderedproducts et orders (étant donné que ces tables se produisent avant products dans le composant Join). Vous pouvez maintenant jumeler des paires de tables products avec des champs de tables les précédant (dans ce cas, orderedproducts.product_id et products.id).
Pour joindre une quatrième table (users), choisir la table users depuis la liste déroulante. Vous pouvez maintenant jumeler les champs orders.user_id et users.id.
Maintenant que toutes les conditions join requises ont été définies, les items du composant Join peuvent être mappés dans un composant de cible. Pour terminer le mappage, ajouter un composant CSV (voir CSV et fichiers de texte), et connecter les items depuis le composant Join vers le composant CSV cible comme illustré ci-dessous :
Le mappage illustré ci-dessus produit un rapport (en format CSV) compilé à partir des quatre tables comprises dans la jointure, comme suit :
•ID de la commande (prélevée dans la table orderedproducts)
•Quantité des items commandés (prélevée dans la table orderedproducts)
•Moment auquel la commande a été passée (prélevé dans la table orders)
•Nom du produit commandé (prélevé dans la table products)
•Prénom et nom de famille de l'utilisateur qui a commandé le produit (prélevés dans la table users).
Toutes les tables présentées dans cet exemple sont jointes en utilisant le mode INNER JOIN. Pour plus d'information concernant la modification du mode join en LEFT OUTER JOIN, voir Changer le mode join.