Dans cette section : |
Vous pouvez utiliser l'onglet Jointure pour manipuler les sources de données lors de l'utilisation d'une jointure. L'onglet Jointure n'est disponible qu'à la création d'une Jointure.
Une jointure est une connexion temporaire entre deux ou plusieurs sources de données partageant au moins un champ commun. Par exemple, un département Ressources Humaines pourrait avoir une source de données EMPLOYEE incluant un champ code fonction et une source de données JOBFILE incluant aussi un champ code fonction. Dans un tel scénario, les deux sources de données peuvent être jointes.
À la création d'une jointure, le format de champ et le type doivent être les mêmes pour les champs communs, mais il n'est pas nécessaire qu'ils aient le même nom.
Une fois les deux fichiers joints l'un à l'autre, et à chaque fois qu'un enregistrement est extrait du premier fichier (le fichier hôte), les enregistrements correspondants du second fichier (le fichier à référence croisée) sont eux aussi extraits. L'onglet Sortie est présenté dans l'image suivante.
Vous pouvez choisir le mode d'affichage des sources de données en cours dans la jointure. Le groupe Requêtes est montré ci-dessous.
Les commandes sont :
Organise les fenêtres en mosaïque avec chevauchement (défaut).
Organise les fenêtres en mosaïque horizontale sans chevauchement.
Organise les fenêtres en mosaïque verticale sans chevauchement.
Dans cette section : |
Vous pouvez enregistrer, exécuter, ajouter, et automatiquement joindre des sources de données à la création d'une jointure. Le groupe Joindre est montré dans l'image suivante.
Les commandes sont :
Crée un nouvel utilisateur.
Ajoute un nouveau fichier à la jointure.
Lance la fenêtre de dialogue Effacer Jointures, dans laquelle vous pouvez spécifier les jointures disponibles à effacer.
Insère un champ Define dans une Jointure.
Les jointures qui sont basées sur les champs virtuels utilisent la syntaxe DEFINE pour créer un champ virtuel dans le fichier hôte que vous pouvez alors joindre à un champ de référence croisée réel. Il se peut que l'expression DEFINE qui crée le champ hôte virtuel ne contienne que des champs du fichier hôte et des constantes. (Elle ne peut pas contenir de champs dans le fichier de référence).
Vous pouvez joindre un champ virtuel à plus d'un champ réel dans plus d'un fichier à référence croisée à l'aide des commandes Jointure différentes, chacune se référant au même fichier hôte.
Pour plus d'informations, consultez Jointures basées sur DEFINE.
Crée une jointure conditionnelle.
La jointure conditionnelle emploie la syntaxe basée sur WHERE pour spécifier des jointures basées sur des critères WHERE, et non seulement sur l'égalité entre champs. De plus, les champs de jointure hôte et de référence ne doivent pas être au même format.
Supposons qu'une source de données liste des employés en fonction de leurs numéros d'identifiant (le fichier hôte), et une autre source de données liste des cours de formation et les employés qui y sont assistés (le fichier de référence). Grâce à une jointure conditionnelle, vous pouvez joindre un identifiant employé dans le fichier hôte à un identifiant employé dans le fichier de référence afin de déterminer quels employés ont assisté à des cours de formation à une période comprise entre deux dates (la condition Where).
Affiche ou masque la fenêtre source .fex.
Effectuer des jointures automatiques au sein des tables.
Vous pouvez utiliser le canvas Jointure pour joindre temporairement deux sources de données ou plus et utiliser leurs données comme si elles n'étaient qu'une seule source. Les fichiers joints restent physiquement séparés, mais sont traités comme une de source de données virtuelle. Le composant Jointure fournit une méthode graphique pour créer et manipuler tous les types de jointure. Pour créer une jointure, vous devez spécifier un fichier hôte, puis un fichier de référence croisée. Les fichiers hôtes et fichiers de référence croisée sont des fichiers maîtres.
Il vous incombe de mettre l'objet de jointure dans la position correcte, c'est-à-dire, avant un DEFINE, un rapport ou un graphique, et de l'exécuter. A moins d'être explicitement effacée, la jointure demeure active jusqu'à la fin de la session.
La zone de travail Jointure s'ouvre et affiche les champs dans le fichier Maître.
Vous pouvez également faire un clic droit sur la zone de travail de la jointure, puis sélectionner Ajouter un fichier.
Le nouveau fichier Maître est ajouté à la zone de travail. Les champs en commun des deux fichiers sont joints par une ligne de connexion de jointure.
Une fenêtre de dialogue s'ouvre et affiche le code du composant, et soit un message d'erreur, soit du texte indiquant qu'aucune erreur n'existe.
Vous pouvez ajouter un autre composant à la procédure en faisant un clic droit sur le composant Jointure, en pointant sur Nouveau, puis en cliquant sur le composant. Lorsque vous êtes invité à sélectionner un fichier Maître, sélectionnez le fichier hôte utilisé lors de la création du composant Jointure. Cela vous permet alors d'utiliser les sources de données jointes.
Les jointures qui sont basées sur les champs virtuels utilisent la syntaxe DEFINE pour créer un champ virtuel dans le fichier hôte que vous pouvez alors joindre à un champ de référence croisée réel. Il se peut que l'expression DEFINE qui crée le champ hôte virtuel ne contienne que des champs du fichier hôte et des constantes. Il ne peut contenir de champs associés à des références croisées.
Un champ virtuel est un champ temporaire que vous décrivez dans un fichier ou une procédure Maître. La valeur du champ virtuel est calculée et traitée en tant que partie de sources de données.
Vous pouvez joindre un champ virtuel à plus d'un champ réel dans plus d'un fichier à référence croisée à l'aide des commandes Jointure différentes, chacune se référant au même fichier hôte.
Considérez les facteurs suivants avant de changer un champ virtuel en un champ d'hôte dans une jointure :
La zone de travail Jointure s'ouvre et affiche les champs dans le fichier Maître.
La fenêtre de dialogue Jointure DEFINE dans un fichier s'ouvre.
Le champ virtuel apparaît dans la fenêtre Champs du fichier hôte :
Vous pouvez également faire un clic droit sur la zone de travail de la jointure, puis sélectionner Ajouter un fichier.
Le nouveau fichier Maître est ajouté à la zone de travail. Supprimez toutes lignes de connexion de jointures existantes.
Vous ne pouvez pas joindre des champs multiples avec cette option. Le champ virtuel doit être le seul champ Jointure.
Dans certains cas, il est possible que vous souhaitiez joindre plus d'un champ hôte avec un champ possédant une seule référence croisée. La procédure, tout comme la relation, diffère des jointures entre des source de données relationnelles, des jointures entrent de source de données WebFOCUS, et des jointures entre des sources de données relationnelles et WebFOCUS.
Il existe deux types de jointures multi-champs :
Le tableau suivant dresse la liste des types de jointures permises entre fichier :
Hôte |
à référence croisée |
Constructions de jointures multi-champs supportées |
---|---|---|
SQL* |
SQL |
Vous pouvez joindre deux fichiers SQL avec une construction multi-champs. Vous ne pouvez pas directement effectuer une jointure sur deux fichiers SQL avec une jointure à concaténation. Vous pouvez cependant utiliser une jointure basée sur Define pour parvenir au même résultat qu'une jointure avec concaténation produirait entre deux fichiers SQL. |
WebFOCUS |
WebFOCUS |
Vous ne pouvez utiliser la construction jointure avec concaténation que pour joindre deux champs hôtes WebFOCUS à un champ référence croisée WebFOCUS unique. |
SQL |
WebFOCUS |
Vous pouvez utiliser la construction jointure avec concaténation pour joindre deux champs hôtes SQL à un champ référence croisée WebFOCUS unique. |
WebFOCUS |
SQL |
Vous pouvez joindre un fichier WebFOCUS et un fichier SQL à l'aide d'une construction jointure multi-champs. Vous ne pouvez pas joindre un fichier WebFOCUS et un fichier SQL avec une jointure à concaténation. Vous pouvez cependant utiliser une jointure basée sur Define pour parvenir au même résultat qu'une jointure avec concaténation produirait entre ces fichiers. |
* SQL représente toutes les sources de données relationnelles.
Vous pouvez utiliser la construction jointure avec concaténation entre deux fichiers WebFOCUS et entre un fichier relationnel hôte et un fichier WebFOCUS à référence croisée. C'est là le seul type de construction jointure multi-champs que vous pouvez utiliser entre ces fichiers.
Les deux premiers champs hôtes sont combinés dans une jointure avec concaténation. Le champ résultat est alors joint au champ à référence croisée.
A l'aide des jointures conditionnelles, vous pouvez établir des jointures basées sur des conditions autres que l'égalité entre champs. De plus, les champs d'hôte et de référence ne doivent pas nécessairement contenir des formats correspondants, et le champ de référence croisée ne doit pas être indexé.
La jointure conditionnelle est prise en charge par FOCUS et tous les adaptateurs de données relationnelles. Dans la mesure où chaque source de données varie dans sa capacité de prise en charge de critères conditionnels complexes, l'optimisation de la syntaxe WHERE varie selon la source de données spécifiquement impliquée dans la jointure et la complexité des critères conditionnels.
Pour afficher une liste des sources de données jointes, sélectionnez le sujet de la requête suivante dans l'outil Requête, ou bien lancez la commande depuis la Console commande :
? JOIN
liste toutes les jointures actuellement actives, et indique celles qui sont basées sur les critères WHERE.
La zone de travail Jointure s'ouvre et affiche les champs dans le fichier Maître.
Vous pouvez également faire un clic droit sur la zone de travail de la jointure, puis sélectionner Ajouter un fichier.
Si le développement se fait dans la zone Serveurs de données ou dans le référentiel, une fenêtre de dialogue Liste de tables WebFOCUS s'ouvre. Si le développement se fait dans la zone Projets, la fenêtre de dialogue Ouvrir s'ouvre.
Le nouveau fichier Maître est ajouté à la zone de travail. Les champs en commun des deux fichiers sont joints par une ligne de connexion de jointure.
Si vous devez changer le type de jointure ou son nom, double cliquez sur la jointure conditionnelle pour lancer la fenêtre Propriétés jointures.
Il est possible de personnaliser une jointure existante en changeant les fichiers ou les champs utilisés dans cette jointure. Si aucune jointure par défaut n'a été créée, cette même technique peut être utilisée pour définir explicitement une connexion.
Vous pouvez également changer le nom d'une jointure, rendre une jointure unique, utiliser un champ virtuel comme champ de jointure et ajouter des noms de balise aux fichiers de jointure.
Si vous supprimez le fichier hôte, vous supprimez automatiquement tous les fichiers de référence.
Vous pouvez aussi sélectionner la ligne de connecteurs jointures, puis sur l'onglet jointures, dans le groupe jointures, cliquez sur Effacer, ou encore appuyez sur la touche Suppr.
Les fichiers apparaissent toujours dans la fenêtre, mais sans ligne de connexion les reliant.
Pour créer votre propre jointure (après avoir supprimé la jointure existante, le cas échéant) :
Une ligne de connexion de jointure s'affiche.
Vous pouvez laisser la fenêtre Jointure ouverte et créer une autre jointure en :
Vous pouvez définir jusqu'à 63 jointures concurrentes qui auront un maximum de 64 segments dans la nouvelle structure de jointure.
Par défaut, toute jointure est une instance multiple.
Pour faire d'une jointure de instance unique :
Un nom par défaut est automatiquement attribué à chaque jointure.
Vous pouvez utiliser le nom de jointure plus tard pour effacer la jointure et pour éviter qu'une autre jointure ne la remplace. Si vous supprimez complètement le nom de cette jointure, toute jointure non nommée subséquente la remplacera.
Vous pouvez aussi fournir une description. Elle ne sera pas utilisée pour la commande Jointure, mais à des fins de référence. Un commentaire (-*) est ajouté à la procédure. Par exemple, -*JOINDESC J0.
Remarque : certains mots ne peuvent pas être utilisés comme nom de jointure, dont ALL, AND, AS, IN, JOIN, TAG, TO et WITH.
La fenêtre de dialogue Définir jointure dans un fichier offre les champs et les options suivants :
Identifie le champ virtuel en tant que champ hôte dans la jointure.
Associe le champ virtuel à un segment dans la source de données : Sélectionnez n'importe quel champ du segment dans lequel vous souhaitez placer un champ virtuel.
Les noms de balises fournissent une méthode pour faire des noms de champs identiques une instance unique. Ils fonctionnent comme des alias pour les noms de fichier dans la Jointure. Les noms de balises sont utiles lorsque vous joignez un fichier à lui-même, les noms de jointure de tout champ, les noms de segments, et les noms de fichiers sont identiques dans les fichiers hôte et à référence croisée. Les noms de balises s'avèrent aussi utiles si un fichier est utilisé en tant que cible plus d'une fois dans la structure de la jointure.
Une procédure peut utiliser le nom de balise d'un fichier en tant que qualificateur pour les noms de champ et les alias dans le fichier.
Si vous créez un rapport utilisant une jointure récursive sans nom de balise, les noms de champ dans le fichier à référence croisée seront préfixés avec les quatre premiers caractères du nom de jointure.
Remarque :
Une fois que la Jointure existe, vous pouvez l'extraire, effectuer un rapport, voir sa syntaxe, et l'effacer. Effacer une jointure la rend inactive.
La fenêtre de dialogue Effacer jointure dans un fichier offre les champs et les options suivants :
Liste de toutes les jointures en cours.
Affiche les jointures qui seront supprimées si vous cliquez sur OK.
Déplace les jointures sélectionnées dans la liste Jointures à effacer.
Déplace les jointures sélectionnées dans la liste Jointures disponibles.
Pour visualiser ou modifier les propriétés d'une jointure, faites un clic droit sur le lien jointure puis sélectionnez Propriétés, ou bien double cliquez sur Jointure. La fenêtre Sélection du Client s'ouvre, comme le montre l'image suivante.
La fenêtre de dialogue Propriétés jointure offre les champs et les options suivants :
Saisissez un nom de balise pour la source de données.
Saisissez un nom de balise pour le fichier de référence.
Affiche le champ du fichier hôte qui a été joint au fichier de référence. Une flèche simple indique une Jointure unique ; une double flèche indique une Jointure non unique.
Affiche le nom de la jointure. Pour changer le nom de jointure par défaut, saisissez un nouveau nom dans ce champ et cliquez sur OK.
Remarque : le nom de jointure doit être unique et ne peut pas dépasser huit caractères.
Entrez une description. Cette description n'est pas utilisée dans la commande de jointure. Elle est utilisée à titre de référence. Un commentaire (-*) est ajouté à la procédure.
Indique le type de jointure. Choisissez parmi les types suivants :
Instance multiple (non-unique)."Une structure de jointure « one-to-many » (origine unique, destination multiple) fait correspondre une valeur dans la source de données hôte à plusieurs valeurs dans le champ de référence. " La jointure d'un identifiant employé dans une source de données d'employés d'une société à un identifiant employé dans une source de données qui liste tous les cours de formation proposés par cette société crée une liste de tous les cours auxquels chaque employé a assisté, ou une jointure de la seule instance de chaque identifiant dans le fichier hôte aux instances multiples de cet identifiant dans le fichier de référence. Ceci est la sélection par défaut.
Instances simples (anciennement appelée Unique). Une structure « one-to-one » (origine unique, destination unique) qui fait correspondre une valeur dans la source de données hôte à une valeur dans la source de données de référence. Un exemple d'une jointure simple (unique) est la jointure d'un identifiant employé dans une source de données d'employé à un identifiant employé dans une source de données de salaire.
Non spécifié. Lorsqu'une jointure créée dans une version plus ancienne que 7.1 est ouverte dans l'outil de jointure (JOIN), cette option est sélectionnée dans les propriétés de la jointure. Les versions précédant la version 7.1 prennaient implicitement les valeurs de type de jointure et d'autres opérateurs ; ceux-ci n'ont pas été spécifiés dans le code généré. Comme l'outil de jointure (JOIN) est incapable de déterminer le type de jointure créée, si d'autres commandes ont été définies pour contrôler la jointure, vous devez sélectionner les options pertinentes (Jointure interne, Jointure externe gauche, Instances multiples, Instances uniques) dans l'outil de jointure (JOIN) pour mettre à niveau le code généré.
Jointure interne. Une jointure résultant de l'omission dans le rapport de lignes hôte qui n'ont pas de lignes correspondantes dans le fichier de référence.
Jointure externe gauche. Etend les résultats d'une jointure interne et récupère des enregistrements des tables hôte et de référence, y compris ceux de la table de gauche (hôte) et ceux de la table de droite (de référence) partageant des valeurs communes. Lorsqu'il n'y a pas de valeur correspondante dans la table de référence, la jointure récupère tout de même des enregistrements de la table hôte.
WebFOCUS |