Datenquellen verbinden

Themen:

Sie können zwei oder mehrere verwandte Datenquellen verbinden, um eine größere integrierte Datenstruktur zu erstellen, aus der Sie dann mit nur einer Anfrage einen Report erstellen können. Die verbundene Struktur ist virtuell. Man kann über Sie auf mehrere Datenquellen so zugreifen, als ob es eine Datenquelle wäre. Es können bis zu 1023 Joins gleichzeitig mit bis zu 1024 Segmenten vorhanden sein, je nachdem wie viele aktive Segmente vorliegen, wie viele Felder es gibt und wie lang diese sind (die Felder sind auf 32K beschränkt).

Genaueres über Datenquellen, die Sie in einem Join verwenden können, finden Sie unter Datenquellen, die Sie verbinden oder nicht verbinden können.


WebFOCUS
x
Syntax: Reale Felder verbinden

Die folgende JOIN-Syntax setzt voraus, dass die Felder, die verwendet werden, um die Dateien zu verbinden, reale Felder sind, die in der Masterdatei festgelegt wurden. Dies kann ein einfacher Join sein, der auf einem Feld in jeder zu verbindenden Datei basiert, oder, bei Datenquellen, die dieses Verhalten unterstützen, ein Mehrfachfeld-Join. Die folgende Syntax beschreibt den einfachen Join und den Mehrfachfeld-Join:

JOIN [LEFT_OUTER|INNER] hfld1 [AND hfld2 ...] IN hostfile [TAG tag1]
     TO [UNIQUE|MULTIPLE]
     crfield [AND crfld2 ...] IN crfile [TAG tag2] [AS joinname]
END

Hierbei gilt:

JOIN hfld1
Ist der Name eines Feldes in der Hostdatei, das Werte enthält, welche mit einem Feld in der Querverweisdatei gemeinsam verwendet werden. Dieses Feld wird Hostfeld genannt.
AND hfld2...
Kann ein zusätzliches Feld in der Hostdatei sein, mit den unten vermerkten Vorbehalten. Die Phrase, die mit AND beginnt, ist erforderlich, wenn mehrere Felder angegeben werden.
  • Wenn Sie zwei FOCUS-Datenquellen verbinden, können Sie bis zu vier alphanumerische Felder in der Hostdatei angeben, die bei Verkettung Werte enthalten, welche mit der Querverweisdatei gemeinsam verwendet werden. Sie können in der Querverweisdatei nicht mehr als ein Feld angeben, falls das Suffix der Datei FOC ist. Nehmen wir z. B. an, dass die Querverweisdatei ein Telefonnummernfeld mit einem Vorwahl-Präfixaustausch-Format enthält. Die Hostdatei besitzt ein Vorwahlfeld, ein Präfixfeld und ein Austauschfeld. Sie können angeben, dass diese drei Felder mit dem Telefonnummernfeld in der Querverweisdatei verbunden werden. Der JOIN-Befehl behandelt diese drei Felder als ein Feld. Andere Datenquellen haben diese Beschränkung für die Querverweisdatei nicht.
  • Bei Datenadaptern, die Mehrfachfeld- und verkettete Joins unterstützen, können Sie bis zu 16 Felder angeben. Spezifische Informationen über unterstützte Join-Features finden Sie in Ihrer Datenadapter-Dokumentation. Beachten Sie, dass FOCUS-Datenquellen diese Joins nicht unterstützen.
INNER
Gibt einen inneren Join an. Wenn Sie im JOIN-Befehl nicht den Typ des Joins spezifizieren, dann bestimmt die Einstellung des ALL-Parameters den Typ des Joins, der ausgeführt werden soll.
LEFT_OUTER
Spezifiziert einen linken äußeren Join. Wenn Sie im JOIN-Befehl nicht den Typ des Joins spezifizieren, dann bestimmt die Einstellung des ALL-Parameters den Typ des Joins, der ausgeführt werden soll.

Beachten Sie, dass in einem linken äußeren Join Host-Datensätze mit einer fehlenden querverwiesenen Instanz in der Reportausgabe enthalten sind. Um zu steuern, wie Tests mit fehlenden querverwiesenen Segmentinstanzen verarbeitet werden, verwenden Sie den Befehl SET SHORTPATH, der beschrieben ist unter Eine fehlende Segmentinstanz verarbeiten.

IN hostfile
Ist der Name der Hostdatei.
TAG tag1
Ist der Tag-Name mit bis zu acht Zeichen (normalerweise der Name der Masterdatei), der als eindeutiger Kennzeichner für Felder und Aliase in der Hostdatei verwendet wird.

Der Tag-Name für die Hostdatei muss in allen JOIN-Befehlen einer Join-Struktur derselbe sein.

TO [UNIQUE|MULTIPLE] crfld1
Ist der Name eines Feldes in der Querverweisdatei, das Werte enthält, die mit denen von hfld1 (oder von verketteten Hostfeldern) übereinstimmen. Dieses Feld wird Querverweisfeld genannt.

Hinweis: Unique gibt nur eine Instanz zurück, und falls es keine übereinstimmende Instanz in der querverwiesenen Datei gibt, stellt es Defaultwerte zur Verfügung (Leerstellen für alphanumerische Felder und Null für numerische Felder).

Verwenden Sie den Parameter MULTIPLE, wenn crfld1 mehrere Instanzen mit einem Wert in hfld1 gemein hat. Beachten Sie, dass ALL ein Synonym für MULITPLE ist und dass das Auslassen dieses Parameters ein Synonym für UNIQUE ist. Weitere Informationen finden Sie unter Eindeutige und nicht eindeutige verbundene Strukturen.

AND crfld2...
Ist der Name eines Feldes in der Querverweisdatei, das Werte mit hfld2 gemein hat.

Hinweis: crfld2 kann qualifiziert sein. Dieses Feld ist nur für Datenadapter verfügbar, die Mehrfachfeld-Joins unterstützen.

IN crfile
Ist der Name der Querverweisdatei.
TAG tag2
Ist ein Tag-Name mit bis zu acht Zeichen (normalerweise der Name der Masterdatei), der als eindeutiger Kennzeichner für Felder und Aliase in Querverweisdateien verwendet wird. In einer rekursiven Join-Struktur werden allen Feldnamen und Aliasen die ersten vier Zeichen des Join-Namens vorangestellt, wenn kein Tag-Name angegeben wurde. Weitere Informationen zu diesem Thema finden Sie unter Verwendungshinweise für rekursive verbundene Strukturen.

Der Tag-Name für die Hostdatei muss in allen JOIN-Befehlen einer Join-Struktur derselbe sein.

AS joinname
Ist ein optionaler Name mit bis zu acht Zeichen, den Sie einer Join-Struktur zuweisen können. Sie müssen einer Join-Struktur einen eindeutigen Namen zuweisen, wenn:
  • Sie sicherstellen möchten, dass ein nachfolgender Join-Befehl ihn nicht überschreibt.
  • Sie ihn später selektiv löschen möchten.
  • Die Struktur rekursiv ist. Siehe Rekursive verbundene Strukturen.

Hinweis: Wenn Sie der Join-Struktur keinen Namen mit der AS-Phrase zuweisen, wird angenommen, dass der Name leer ist. Ein Join ohne Namen überschreibt einen vorhandenen Join ohne Namen.

END
Ist erforderlich, wenn der JOIN-Befehl länger als eine Zeile ist. Es beendet den Befehl. Er muss sich auf einer eigenen Zeile befinden.


Beispiel: Eine einfache eindeutige verbundene Struktur erstellen

Unterhalb sehen Sie ein Beispiel eines einfachen eindeutigen Joins:

JOIN JOBCODE IN EMPLOYEE TO JOBCODE IN JOBFILE AS JJOIN


Beispiel: Einen inneren Join erstellen

Die folgende Prozedur erstellt drei FOCUS-Datenquellen:

Die Prozedur fügt dann EMPINFO einen Angestellten mit dem Namen Fred Newman hinzu, für den es in den Datenquellen JOBINFO oder EDINFO keine übereinstimmenden Datensätze gibt.

TABLE FILE EMPLOYEE
SUM LAST_NAME FIRST_NAME CURR_JOBCODE
BY EMP_ID
ON TABLE HOLD AS EMPINFO FORMAT FOCUS INDEX EMP_ID CURR_JOBCODE
END
-RUN
 
TABLE FILE JOBFILE
SUM JOB_DESC
BY JOBCODE
ON TABLE HOLD AS JOBINFO FORMAT FOCUS INDEX JOBCODE
END
-RUN
 
TABLE FILE EDUCFILE
SUM COURSE_CODE COURSE_NAME
BY EMP_ID
ON TABLE HOLD AS EDINFO FORMAT FOCUS INDEX EMP_ID
END
-RUN
 
MODIFY FILE EMPINFO
FREEFORM EMP_ID LAST_NAME FIRST_NAME CURR_JOBCODE
MATCH EMP_ID
ON NOMATCH INCLUDE
ON MATCH REJECT
DATA
111111111, NEWMAN, FRED, C07,$
END

Die folgende Anfrage druckt die Inhalte von EMPINFO. Beachten Sie, dass Fred Newman der Datenquelle hinzugefügt wurde:

TABLE FILE EMPINFO
PRINT *
END

Die Ausgabe ist:

EMP_ID     LAST_NAME        FIRST_NAME  CURR_JOBCODE
------     ---------        ----------  ------------
071382660  STEVENS          ALFRED      A07
112847612  SMITH            MARY        B14
117593129  JONES            DIANE       B03
119265415  SMITH            RICHARD     A01
119329144  BANNING          JOHN        A17
123764317  IRVING           JOAN        A15
126724188  ROMANS           ANTHONY     B04
219984371  MCCOY            JOHN        B02
326179357  BLACKWOOD        ROSEMARIE   B04
451123478  MCKNIGHT         ROGER       B02
543729165  GREENSPAN        MARY        A07
818692173  CROSS            BARBARA     A17
111111111  NEWMAN           FRED        C07

Der folgende JOIN-Befehl erstellt einen inneren Join zwischen der Datenquelle EMPINFO und der Datenquelle JOBINFO.

JOIN CLEAR *
JOIN INNER CURR_JOBCODE IN EMPINFO TO MULTIPLE JOBCODE IN JOBINFO AS J0

Beachten Sie, dass der JOIN-Befehl einen Mehrfach-Join angibt. In einem eindeutigen Join wird das Querverweissegment nie als fehlend betrachtet und alle Datensätze der Hostdatei werden in der Reportausgabe angezeigt. Defaultwerte (Leerstelle für alphanumerische Felder und Null für numerische Felder) werden angezeigt, falls keine tatsächlichen Daten vorhanden sind.

Die folgende Anfrage zeigt Felder der verbundenen Struktur an:

TABLE FILE EMPINFO
PRINT LAST_NAME FIRST_NAME JOB_DESC
END

Fred Newman wird in der Reportausgabe weggelassen, da es für seinen Jobcode in der Datenquelle JOBINFO keine Übereinstimmung gibt:

LAST_NAME  FIRST_NAME  JOB_DESC
---------  ----------  --------
STEVENS    ALFRED      SECRETARY
SMITH      MARY        FILE QUALITY
JONES      DIANE       PROGRAMMER ANALYST
SMITH      RICHARD     PRODUCTION CLERK
BANNING    JOHN        DEPARTMENT MANAGER
IRVING     JOAN        ASSIST.MANAGER
ROMANS     ANTHONY     SYSTEMS ANALYST
MCCOY      JOHN        PROGRAMMER
BLACKWOOD  ROSEMARIE   SYSTEMS ANALYST
MCKNIGHT   ROGER       PROGRAMMER
GREENSPAN  MARY        SECRETARY
CROSS      BARBARA     DEPARTMENT MANAGER


Beispiel: Einen linken äußeren Join erstellen

Der folgende JOIN-Befehl erstellt einen linken äußeren Join zwischen der Datenquelle EMPINFO und der Datenquelle EDINFO:

JOIN CLEAR *
JOIN LEFT_OUTER EMP_ID IN EMPINFO TO MULTIPLE EMP_ID IN EDINFO AS J1

Die folgende Anfrage zeigt Felder der verbundenen Struktur an:

TABLE FILE EMPINFO
PRINT LAST_NAME FIRST_NAME COURSE_NAME
END

Alle Angestelltendatensätze werden in der Reportausgabe angezeigt. Die Datensätze für Angestellte, für die es in der EDINFO-Datenquelle keine Übereinstimmung gibt, zeigen das Zeichen für fehlende Daten (.) in der COURSE_NAME-Spalte an. Wenn der Join eindeutig wäre, würden anstelle des Zeichens für fehlende Daten Leerstellen angezeigt werden.

LAST_NAME  FIRST_NAME  COURSE_NAME
---------  ----------  -----------
STEVENS    ALFRED      FILE DESCRPT & MAINT
SMITH      MARY        BASIC REPORT PREP FOR PROG
JONES      DIANE       FOCUS INTERNALS
SMITH      RICHARD     BASIC RPT NON-DP MGRS
BANNING    JOHN        .
IRVING     JOAN        .
ROMANS     ANTHONY     .
MCCOY      JOHN        .
BLACKWOOD  ROSEMARIE   DECISION SUPPORT WORKSHOP
MCKNIGHT   ROGER       FILE DESCRPT & MAINT
GREENSPAN  MARY        .
CROSS      BARBARA     HOST LANGUAGE INTERFACE
NEWMAN     FRED        .


Beispiel: Zwei innere Joins mit einer Mehrpfadstruktur erstellen

Die folgenden JOIN-Befehle erstellen einen inneren Join zwischen den Datenquellen EMPINFO und JOBINFO und einen inneren Join zwischen den Datenquellen EMPINFO und EDINFO:

JOIN CLEAR *
JOIN INNER CURR_JOBCODE IN EMPINFO TO MULTIPLE JOBCODE IN JOBINFO AS J0
JOIN INNER EMP_ID IN EMPINFO TO MULTIPLE EMP_ID IN EDINFO AS J1

Die Struktur, die von den zwei Joins erstellt wird, besitzt zwei unabhängige Pfade:

         SEG01
 01      S1
**************
*EMP_ID      **I
*CURR_JOBCODE**I
*LAST_NAME   **
*FIRST_NAME  **
*            **
***************
 **************
       I
       +-----------------+
       I                 I
       I SEG01           I SEG01
 02    I KM        03    I KM
..............    ..............
:EMP_ID      ::K  :JOBCODE     ::K
:COURSE_CODE ::   :JOB_DESC    ::
:COURSE_NAME ::   :            ::
:            ::   :            ::
:            ::   :            ::
:............::   :............::
 .............:    .............:
 JOINED  EDINFO    JOINED  JOBINFO

Die folgende Anfrage zeigt Felder der verbundenen Struktur an:

SET MULTIPATH=SIMPLE
TABLE FILE EMPINFO
PRINT LAST_NAME FIRST_NAME IN 12 COURSE_NAME JOB_DESC
END

Mit MULITPATH=SIMPLE erstellen die unabhängigen Pfade unabhängige Joins. Alle Angestelltendatensätze, die von einem der Joins akzeptiert werden, werden in der Reportausgabe angezeigt. Nur Fred Newman (für den in keiner der Querverweisdateien ein übereinstimmender Datensatz vorhanden ist) wird weggelassen:

LAST_NAME  FIRST_NAME  COURSE_NAME                     JOB_DESC
---------  ----------  -----------                     --------
STEVENS    ALFRED      FILE DESCRPT & MAINT            SECRETARY
SMITH      MARY        BASIC REPORT PREP FOR PROG      FILE QUALITY
JONES      DIANE       FOCUS INTERNALS                 PROGRAMMER ANALYST
SMITH      RICHARD     BASIC RPT NON-DP MGRS           PRODUCTION CLERK
BANNING    JOHN        .                               DEPARTMENT MANAGER
IRVING     JOAN        .                               ASSIST.MANAGER
ROMANS     ANTHONY     .                               SYSTEMS ANALYST
MCCOY      JOHN        .                               PROGRAMMER
BLACKWOOD  ROSEMARIE   DECISION SUPPORT WORKSHOP       SYSTEMS ANALYST
MCKNIGHT   ROGER       FILE DESCRPT & MAINT            PROGRAMMER
GREENSPAN  MARY        .                               SECRETARY
CROSS      BARBARA     HOST LANGUAGE INTERFACE         DEPARTMENT MANAGER

Mit MULTIPATH=COMPOUND werden nur Angestellte mit übereinstimmenden Datensätzen in beiden Querverweisdateien in der Reportausgabe angezeigt:

LAST_NAME  FIRST_NAME  COURSE_NAME                     JOB_DESC
---------  ----------  -----------                     --------
STEVENS    ALFRED      FILE DESCRPT & MAINT            SECRETARY
SMITH      MARY        BASIC REPORT PREP FOR PROG      FILE QUALITY
JONES      DIANE       FOCUS INTERNALS                 PROGRAMMER ANALYST
SMITH      RICHARD     BASIC RPT NON-DP MGRS           PRODUCTION CLERK
BLACKWOOD  ROSEMARIE   DECISION SUPPORT WORKSHOP       SYSTEMS ANALYST
MCKNIGHT   ROGER       FILE DESCRPT & MAINT            PROGRAMMER
CROSS      BARBARA     HOST LANGUAGE INTERFACE         DEPARTMENT MANAGER

Nach oben

x
Referenz: Voraussetzungen für Querverweisfelder in einem Equijoin

Die Querverweisfelder, die in einem JOIN verwendet werden, müssen in spezifischen Datenquellen die folgenden Charakteristika besitzen:


Nach oben

x
Referenz: Beschränkungen für Gruppenfelder

Wenn Gruppenfelder in einer verbundenen Struktur verwendet werden, muss die Gruppe in der Hostdatei und die Gruppe in der Querverweisdatei dieselbe Anzahl Elemente besitzen:


Nach oben

x
Referenz: Verwendungshinweise für innere und äußere JOIN-Befehlssyntax

Nach oben

x
Einen Equijoin verwenden, um ein virtuelles Feld mit einem realen Feld zu verbinden

Vorgehensweise:

Referenz:

Sie können auf DEFINE basierende JOIN-Syntax verwenden, um ein virtuelles Hostfeld zu erstellen, das Sie mit einem realen Querverweisfeld verbinden können. Die DEFINE-Formel, die das virtuelle Hostfeld erstellt, kann nur Felder der Hostdatei oder Konstanten enthalten. (Es kann sein, dass sie keine Felder in der Querverweisdatei enthält.) Sie können mehr als einen Join von einem virtuellen Feld erstellen.

Sie können das virtuelle Hostfeld in einem separaten DEFINE-Befehl oder in einer Masterdatei erstellen. Informationen zu Masterdateien finden Sie im Handbuch Daten mit der WebFOCUS-Sprache beschreiben .

Dieselbe Reportanfrage kann sowohl auf JOIN basierende virtuelle Felder als auch virtuelle Felder enthalten, die nicht mit dem Join in Beziehung stehen.

Beachten Sie, dass Sie, wenn Sie ein virtuelles Feld in einem DEFINE-Befehl erstellen, den DEFINE- nach dem JOIN-Befehl aber vor der TABLE-Anfrage ausstellen müssen, da ein JOIN-Befehl alle Felder löscht, die von DEFINE-Befehlen für die Hostdatei und die verbundene Struktur erstellt wurden. Virtuelle Felder, die in Masterdateien definiert wurden, werden nicht gelöscht.

Tipp: Wenn dem JOIN-Befehl ein DEFINE-Befehl vorausgeht, können Sie KEEPDEFINES ON so einstellen, dass virtuelle Felder während des Parsings eines nachfolgenden JOIN-Befehls erneuert werden. Weitere Informationen finden Sie unter Virtuelle Felder mit KEEPDEFINES ON beibehalten.



x
Syntax: Join von einem virtuellen Feld zu einem realen Feld

Der auf DEFINE basierende JOIN-Befehl ermöglicht es Ihnen, ein virtuelles Feld in der Hostdatei mit einem realen Feld in der Querverweisdatei zu verbinden. Die Syntax lautet:

JOIN [LEFT_OUTER|INNER] deffld WITH host_field ... 
     IN hostfile [TAG tag1]
     TO [UNIQUE|MULTIPLE] 
     cr_field IN crfile [TAG tag2] [AS joinname]
END

Hierbei gilt:

JOIN deffld
Ist der Name eines virtuellen Feldes für die Hostdatei (das Hostfeld). Das virtuelle Feld kann in der Masterdatei oder mit einem DEFINE-Befehl definiert werden. Weitere Informationen zu diesem Thema finden Sie unter Verwendungshinweise für virtuelle Felder mit verbundenen Datenquellen.
WITH host_field
Ist der Name eines beliebigen realen Feldes im Hostsegment, dem Sie das virtuelle Feld zuordnen möchten. Diese Zuordnung ist erforderlich, um das virtuelle Feld zu lokalisieren.

Die Phrase WITH wird benötigt, es sei denn der Parameter KEEPDEFINES ist auf ON gestellt und deffld wurde vor dem Ausstellen des JOIN-Befehls definiert.

Verwenden Sie, um zu bestimmen, welches Segment das virtuelle Feld enthält, die ? DEFINE-Abfrage, nachdem Sie den DEFINE-Befehl ausgegeben haben. Sie finden im Handbuch Reportanwendungen entwickeln Genaueres über Abfragebefehle finden Sie im Handbuch .

INNER
Gibt einen inneren Join an. Wenn Sie im JOIN-Befehl nicht den Typ des Joins spezifizieren, dann bestimmt die Einstellung des ALL-Parameters den Typ des Joins, der ausgeführt werden soll.
LEFT_OUTER
Spezifiziert einen linken äußeren Join. Wenn Sie im JOIN-Befehl nicht den Typ des Joins spezifizieren, dann bestimmt die Einstellung des ALL-Parameters den Typ des Joins, der ausgeführt werden soll.
IN hostfile
Ist der Name der Hostdatei.
TAG tag1
Ist der Tag-Name mit bis zu acht Zeichen (normalerweise der Name der Masterdatei), der als eindeutiger Kennzeichner für Felder und Aliase in Hostdateien verwendet wird.

Der Tag-Name für die Hostdatei muss in allen JOIN-Befehlen einer verbundenen Struktur gleich sein.

TO [UNIQUE|MULTIPLE] crfld1
Ist der Name eines realen Feldes in der Querverweisdatenquelle, dessen Werte mit denen des virtuellen Feldes übereinstimmen. Dies muss eine reales Feld sein, das in der Masterdatei festgelegt wurde.

Hinweis: Unique gibt nur eine Instanz zurück, und falls es keine übereinstimmende Instanz in der querverwiesenen Datei gibt, stellt es Defaultwerte zur Verfügung (Leerstellen für alphanumerische Felder und Null für numerische Felder).

Verwenden Sie den Parameter MULTIPLE, wenn crfld1 mehrere Instanzen mit einem Wert in hfld1 gemein hat. Beachten Sie, dass ALL ein Synonym für MULITPLE ist und dass das Auslassen dieses Parameters ein Synonym für UNIQUE ist. Weitere Informationen finden Sie unter Eindeutige und nicht eindeutige verbundene Strukturen.

IN crfile
Ist der Name der Querverweisdatei.
TAG tag2
Ist ein Tag-Name mit bis zu acht Zeichen (normalerweise der Name der Masterdatei), der als eindeutiger Kennzeichner für Felder und Aliase in Querverweisdateien verwendet wird. In einer rekursiven verbundenen Struktur werden allen Feldnamen und Aliasen die ersten vier Zeichen des Join-Namens vorangestellt, wenn kein Tag-Name angegeben wurde. Weitere Informationen zu diesem Thema finden Sie unter Verwendungshinweise für rekursive verbundene Strukturen.

Der Tag-Name für die Hostdatei muss in allen JOIN-Befehlen einer verbundenen Struktur gleich sein.

AS joinname
Ist ein optionaler Name mit bis zu acht Zeichen, den Sie der verbundenen Struktur zuweisen können. Sie müssen einer Join-Struktur einen eindeutigen Namen zuweisen, wenn:
  • Sie sicherstellen möchten, dass ein nachfolgender Join-Befehl ihn nicht überschreibt.
  • Sie ihn später selektiv löschen möchten.
  • Die Struktur ist rekursiv und Sie geben keine Tag-Namen an. Siehe Rekursive verbundene Strukturen.

Es wird, wenn Sie der verbundenen Struktur keinen Namen mit der AS-Phrase zuweisen möchten, angenommen, dass der Name leer ist. Ein Join ohne Namen überschreibt einen vorhandenen Join ohne Namen.

END
Ist erforderlich, wenn der JOIN-Befehl länger als eine Zeile ist. Es beendet den Befehl. Er muss sich auf einer eigenen Zeile befinden.


x
Referenz: Verwendungshinweise für virtuelle Felder mit verbundenen Datenquellen

Anfragen, die verbundene Datenquellen lesen, können virtuelle Felder enthalten, die folgendermaßen definiert werden können:



Beispiel: Ein virtuelles Hostfeld für eine verbundene Struktur erstellen

Nehmen wir an, dass eine Einzelhandelskette vier Geschäftsleiter auf Fortbildungskurse schickt. Jeder von ihnen leitet ein Geschäft in einer anderen Stadt und wird durch eine ID-Nummer identifiziert. Die Geschäfte und die Städte, in denen sich diese befinden, sind in der SALES-Datenquelle enthalten. Die Geschäftsführer-IDs, die Kurse und die Daten, an denen die Geschäftsleiter teilgenommen haben, befinden sich in der EDUCFILE-Datenquelle.

Die folgende Prozedur listet die Kurse auf, an denen die Geschäftsleiter teilgenomen haben, wobei sie durch die Städte identifiziert werden, in denen sie arbeiten. Beachten Sie die drei Elemente in der Prozedur:

Die Prozedur ist:

JOIN ID_NUM WITH CITY IN SALES TO ALL EMP_ID IN EDUCFILE AS SALEDUC
DEFINE FILE SALES
ID_NUM/A9 = DECODE CITY ('NEW YORK' 451123478 'NEWARK' 119265415
                         'STAMFORD' 818692173 'UNIONDALE' 112847612);
END
TABLE FILE SALES
PRINT DATE_ATTEND BY CITY BY COURSE_NAME
END

Die Ausgabe ist:

CITY                    COURSE_NAME                 DATE_ATTEND
----                    -----------                 -----------
NEW YORK                FILE DESCRPT & MAINT           81/11/15
NEWARK                  BASIC RPT NON-DP MGRS          82/08/24
STAMFORD                BASIC REPORT PREP DP MGRS      82/08/02
                        HOST LANGUAGE INTERFACE        82/10/21
UNIONDALE               BASIC REPORT PREP FOR PROG     81/11/16
                        FILE DESCRPT & MAINT           81/11/15

Nach oben

x
Datenformate gemeinsam verwendeter Felder

Die Felder, die die gemeinsam verwendeten·Werte in der Host- und Querverweisdatei enthalten, müssen generell dasselbe Datenformat haben.

Wenn Sie mehrere Hostdateifelder angeben, behandelt der Befehl JOIN die Felder als ein verkettetes Feld. Fügen Sie die Feldformatlängen hinzu, um die Länge des verketteten Feldes zu erhalten. Sie müssen die folgenden Regeln beachten:


Nach oben

x
Felder mit unterschiedlichen numerischen Datentypen verbinden

Vorgehensweise:

Sie können zwei oder mehrere Datenquellen verbinden, die unterschiedliche numerische Datentypen enthalten. Sie können z. B. ein Feld mit dem Format kurze gepackte Dezimalzahl mit einem Feld mit dem Format lange gepackte Dezimalzahl verbinden. Dies gilt auch für ein Feld mit dem Format ganze Zahl und ein Feld mit dem Format gepackte Dezimalzahl. Dies verschafft Ihnen enorme Flexibilität beim Erstellen von Reports aus verbundenen Datenquellen.

Hinweis:



x
Syntax: Joins mit Datentypkonvertierung aktivieren

Geben Sie, um Joins mit Datentypkonvertierung zu aktivieren, den folgenden Befehl aus

SET JOINOPT = [NEW|OLD]

Hierbei gilt:

NEW
Aktiviert Joins mit Datentypkonvertierung.
OLD
Deaktiviert Joins mit Datentypkonvertierung. Dieser Wert ist der Defaultwert.


Beispiel: Joins mit Datentypkonvertierung ausgeben

Da Sie ein Feld mit dem Format kurze gepackte Dezimalzahl mit einem Feld mit dem Format lange gepackte Dezimalzahl verbinden können, kann in der folgenden Masterdatei ein Join definiert werden:

FILE=PACKED,SUFFIX=FIX,$
  SEGNAME=ONE,SEGTYPE=S0
   FIELD=FIRST,,P8,P4,INDEX=I,$
FILE=PACKED2,SUFFIX=FIX,$
  SEGNAME=ONE,SEGTYPE=S0
   FIELD=PFIRST,,P31,P16,INDEX=I,$

Der JOIN-Befehl kann folgendermaßen aussehen:

JOIN FIRST IN PACKED TO ALL PFIRST IN PACKED2 AS J1

Das bevorzugte Zeichenformat X'C' für positive Werte und X'D' für negative Wert wird weiterhin benötigt, wenn Sie gepackte Felder verbinden. Alle anderen nicht bevorzugten Zeichen werden entweder in X'C' oder X'D' umgewandelt.


WebFOCUS