Jointures

Dans cette section :

Si un rapport requiert des données provenant de deux ou plusieurs sources de données associées, il est possible de joindre ces fichiers de façon temporaire pour en générer des rapports comme s'il ne s'agissait que d'un seul fichier. Les fichiers joints demeurent séparés physiquement, mais ils sont traités comme une seule structure de source de données pendant la session, ou jusqu'à l'effacement de la jointure.

Vous pouvez aussi créer une nouvelle structure de fichiers pour le reporting en joignant des synonymes de tables relationnelles existants en utilisant l'éditeur de jointures avec clusters.


Haut de page

x
Qu'est-ce qu'une jointure ?

Une jointure est une connexion temporaire entre deux ou plusieurs sources de données partageant au moins un champ commun. Par exemple, si la source de données EMPLOYEE inclut un champ code fonction, et que la source de données JOBFILE inclut aussi un champ fonction, vous pouvez joindre les deux sources de données.

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), il extrait aussi les enregistrements correspondants du second fichier (le fichier à référence croisée).


Haut de page

x
Types de jointures

Dans cette section :

La section suivante décrit les types de jointures que vous pouvez créer en utilisant la fonctionnalité jointures (JOIN).



x
Jointures dynamiques

Les jointures dynamiques vous permettent de joindre deux sources de données, ou plus, puis de créer une structure virtuelle à des fins de reporting. Les sources de données restent physiquement séparées, mais App Studio les traite comme une structure unique. Jointures dynamiques

Vous pouvez utiliser des jointures dynamiques pendant la durée de votre session ou jusqu'à ce que vous retiriez la jointure. Les jointures dynamiques peuvent lire les données des sources jointes via les utilitaires TABLE et GRAPH.



x
jointures conditionnelles

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).



x
Jointures à instance unique et à instances multiples

La fonctionnalité Jointure vous permet de créer des jointures à instance unique et à instances multiples. 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 instance simple () est la jointure d'un identifiant employé dans une source de données d'employés à un identifiant employé dans une source de données de salaires.

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.

Lorsque vous créez une jointure dynamique ou conditionnelle utilisant la fonctionnalité Join, vous pouvez spécifier si la jointure utilise une instance unique ou une instance multiple.





x
Jointures basées sur les champs virtuels

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.



x
Jointures externes gauches

Lorsqu'un rapport omet les lignes hôtes qui n'ont pas de lignes à référence croisée correspondante, la jointure est appelée inner join. Lorsqu'un rapport affiche tous les enregistrements correspondants, en plus de tous les enregistrements du fichier hôte qui manquent d'enregistrements de référence correspondants, la jointure s'appelle une jointure externe gauche.

Pour plus de détails sur la syntaxe left outer join, consultez le manuel Création de rapports en langage WebFOCUS.

Remarque : si les paramètres ALL=ON ou ALL=PASS sont appliqués, ils ont un impact sur toutes les jointures de la procédure et sont traités comme des jointures left outer join.



x
Indiquer un hôte pour enregistrements sans enregistrements à référence croisée correspondants

Parfois, il n'existe pas d'enregistrements correspondants dans le fichier à référence croisée. Un enregistrement hôte n'ayant pas d'enregistrement à référence croisée correspondant est appelé un chemin court.

Le rapport résultant quand un enregistrement hôte n'a pas d'enregistrement à référence croisée correspondant dépend des facteurs suivants :


WebFOCUS