À propos des joins dans le Mode SQL
Lorsque vous connectez des composants de base de données éligibles (comme des tables ou des vues) directement à un composant join, un bouton mode SQL ( ) apparaît automatiquement dans le coin supérieur droit du composant join. Lorsque le mode SQL est activé, l'opération join est entreprise par la base de données à partir de laquelle le mappage lit les données. En d'autres termes, MapForce enverra une requête en interne vers la base de données avec la syntaxe SQL appropriée pour sélectionner et combiner des données depuis toutes les tables qui participent à la jointure. Attention: vous n'avez pas besoin d'écrire de SQL ; la requête désirée est produite sur la manière dont vous avez conçu visuellement le composant Join sur le mappage, comme vous le verrez dans les exemples suivants.
Pour que le mode SQL soit possible, les conditions suivantes doivent être satisfaites :
1.Les deux objets (tables ou vues) qui doivent être joints doivent provenir de la même base de données.
2.Les deux objets qui doivent être joints doivent provenir du même composant MapForce. (Veuillez noter que vous pouvez rapidement ajouter/supprimer des objets de base de données dans un composant comme suit : cliquer avec la touche de droite sur le composant de base de données, et choisir Ajouter/Supprimer/Éditer des objets de base de données depuis le menu contextuel.)
3.La condition Join (ou les conditions) doivent uniquement être définies depuis les propriétés de composant (en cliquant avec la touche de droite sur l'en-tête du composant join, et choisir Propriétés), et pas sur le mappage (voir aussi Ajouter des conditions Join).
Note : | Lorsque des tables de base de données sont jointes dans le mode SQL, MapForce créera la condition Join (ou les conditions) automatiquement, sur la base des relations de clé étrangère détectée entre les tables. Pour que des conditions Join automatiques se produisent, les tables de base de données doivent se trouver dans une relation enfant-parent dans le composant MapForce (c'est à dire, qu'une table doit être "parent" ou "child" d'un autre dans le composant), voir Exemple: Joindre des tables dans le mode SQL. |
4.Toutes les tables de base de données ne doivent pas encore être se trouver dans le contexte cible actuel. Lorsque le résultat join est utilisé dans un composant cible, aucune des tables réunies ne peut être connectée directement ou indirectement vers des nœuds de parent cible. Pour plus d'informations concernant la manière dont un mappage est exécuté, voir Règles et stratégies de mappage.
Vous pouvez visualiser ou contrôler le mode SQL par le biais de la touche SQL ( ) situé dans le coin supérieur droit du composant join, comme suit :
Le mode SQL est désactivé (join sera exécuté par MapForce (ou, si applicable, par MapForce Server). | |
Le mode SQL est activé (join sera exécuté par la base de données). |
Si la touche est manquante, cela signifie que le mode SQL ne sera pas significatif ou pas pris en charge pour les données qui sont jointes.
Dans certains cas, le mode SQL doit être désactivé explicitement ( ), par exemple:
•Lorsque votre mappage nécessite des conditions join en-dehors des propriétés de composant join (c'est à dire, des conditions définies sur le mappage et connectées à l'item condition du composant join).
•Lorsque vous souhaitez joindre des tables depuis des base de données variées. Utiliser un joint standard (non-SQL) si vous souhaitez joindre des tables depuis des base de données différentes.
Changer le mode Join
Lorsque le composant Join se trouve dans le mode SQL , vous pouvez joindre les tables de base de données ou les vues des manières suivantes :
•INNER JOIN - Seuls les enregistrements qui satisfont la condition dans les deux ensembles d'entrée sont retournés par le composant Join.
•LEFT OUTER JOIN - Le composant Join inclut tous les enregistrements provenant de la table "à l'extrême gauche" (dans MapForce, il s'agit de la table supérieure d'un composant Join), plus les enregistrements provenant de la table réunie par la suite qui satisfait la condition join.
Pour consulter le mode join d'une table ou consulter le composant Join, observer l'icône affichée devant la table réunie ou la vue. Une des icônes suivantes peut s'afficher pour toute table réunie ou vue sauf la première:
•Inner Join
•Left Join
Pour afficher une infobulle contenant des détails concernant le join, déplacer le curseur sur l'icône :
Pour modifier le mode join, :
•Cliquer sur l'icône Inner Join ou Left Join devant chaque table ou vue réunie et choisir Inner Join ou Left Outer Join depuis le menu contextuel.
•Cliquer avec la touche de droite sur la deuxième (ou troisième, quatrième, etc) table ou vue réunie dans le composant Join, et choisissez Join Type | Inner Join, ou Join Type | Left Outer Join depuis le menu contextuel.
Noter :
•Si vous avez changé le mode join en LEFT OUTER JOIN, la table ou la vue supérieure représentera le côté "gauche" du join.
•Le fait de modifier le mode join affecte les données retournées par le composant join de la même manière que INNER JOIN ou LEFT JOIN impacte le résultat d'une requête SQL dans une base de données.
Noms d'alias
Il arrive souvent que des tables ou des vues de base de données jointes contiennent des noms de champ identiques dans les deux structures jointes. Lorsque le mode SQL est activé, ces items apparaissent sur le composant préfixé par le mot-clé "AS". Par exemple, si les deux tables jointes contiennent un champ "id", ce champ apparaît comme "id" sur la première table jointe et en tant que "id AS id2" sur la deuxième table jointe. Les tables jointes peuvent aussi produire des noms d'alias, par exemple, si la même table est jointe à elle-même.
Le champ alias ou les noms de table sont importants si vous souhaitez vous y référer dans un mappage ultérieurement. Par exemple, imaginez le cas où vous souhaitez filtrer ou trier le résultat de la jointure. Pour y parvenir, la sortie du composant join peut être connectée à un composant WHERE/ORDER SQL, où vous pourrez saisir les clauses SQL WHERE et ORDER BY.
Pour se référer à un champ depuis la clause WHERE, écrire le nom de la table, suivi d'un point (.), suivi par le nom de champ. Pour vous référer à un alias de table, utiliser le nom d'alias comme il apparaît dans le composant Join. Dans la clause ORDER BY, vous pouvez utiliser soit la même technique (table.field), ou écrire juste le nom de champ d'alias (le nom qui apparaît après "AS").
Pour un mappage d'exemple qui utilise des clauses WHERE/ORDER SQL, voir Exemple : Tables Join dans le mode SQL.
Note : | Les composants WHERE/ORDER SQL ne sont pas autorisés entre une table de base de données et le composant join ; Ils peuvent uniquement être ajoutés après (et non pas avant) un composant join. Pour plus d'informations concernant les composant WHERE/ORDER SQL, voir Filtrer et trier les données de base de données (WHERE/ORDER SQL). |