In diesem Abschnitt: Vorgehensweise: Referenz: |
Die WHERE-Phrase wählt aus der Datenquelle die Datensätze aus, die in den Report aufgenommen werden sollen. Die Daten werden anhand der Auswahlkriterien überprüft, bevor sie aus der Datenquelle abgerufen werden.
Sie können so viele WHERE-Phrasen verwenden wie es für das Definieren Ihrer Auswahlkriterien nötig ist. Eine Abbildung finden Sie unter Mehrere WHERE-Phrasen verwenden. Weitere Informationen zu diesem Thema finden Sie unter Zusammengesetzte Formeln für die Datensatzauswahl verwenden.
Hinweis: Mehrere Auswahltests für Felder, die sich auf unterschiedlichen Pfaden einer Mehrpfad-Datenquelle befinden, werden so verarbeitet, als wären sie durch AND- oder OR-Operatoren verbunden. Dies hängt von der Einstellung des Parameters namens MULTIPATH ab. Genaueres finden Sie unter Die Datensatzauswahl in Mehrpfad-Datenquellen steuern.
WHERE criteria [;]
Hierbei gilt:
Die WHERE-Phrase kann Folgendes enthalten:
Beachten Sie, dass Dateien, die mit DECODE-Formeln verwendet werden, zwei Spalten enthalten können: eine für Feldwerte und eine für numerische Decodierungswerte.
Sie können komplexe Auswahlkriterien erstellen, indem Sie einfache Formeln mit den logischen Operatoren AND oder OR verknüpfen und optional Klammern hinzufügen, um ausdrücklich die Reihenfolge der Auswertung anzugeben. Diese Vorgehensweise ist einfacher, als dafür die IF-Phrase zu verwenden, da diese ggf. die Verwendung eines separaten DEFINE-Befehls erfordert. Genaueres finden Sie unter Zusammengesetzte Formeln für die Datensatzauswahl verwenden.
Geben Sie, um nur die Namen und Gehälter von Angestellten anzuzeigen, die mehr als $20.000 im Jahr verdienen, folgende Anfrage ein:
TABLE FILE EMPLOYEE PRINT LAST_NAME AND FIRST_NAME AND CURR_SAL BY LAST_NAME NOPRINT WHERE CURR_SAL GT 20000 END
In diesem Beispiel ist CURR_SAL ein ausgewähltes Feld und CURR_SAL GT 20000 ist das Auswahlkriterium. Nur die Datensätze mit einem derzeitigen Gehalt von mehr als $20.000 werden abgerufen. Alle anderen Datensätze werden ignoriert.
Die Ausgabe ist:
Sie können so viele WHERE-Phrasen verwenden wie es für das Definieren Ihrer Auswahlkriterien nötig ist. Diese Anfrage verwendet mehrere WHERE-Phrasen, so dass nur die Angestellten in der MIS- oder Produktionsabteilung mit dem Nachnamen Cross oder Banning in den Report aufgenommen werden.
TABLE FILE EMPLOYEE PRINT EMP_ID LAST_NAME WHERE SALARY GT 20000 WHERE DEPARTMENT IS 'MIS' OR 'PRODUCTION' WHERE LAST_NAME IS 'CROSS' OR 'BANNING' END
Die Ausgabe ist:
Weitere Informationen zu diesem Thema finden Sie unter Zusammengesetzte Formeln für die Datensatzauswahl verwenden.
Vorgehensweise: Referenz: |
Bei der Reporterstellung einer Mehrpfad-Datenquelle kann ein übergeordnetes Segment untergeordnete Segmente ein paar Pfade weiter unten haben, andere aber nicht. Der Parameter MULTIPATH ermöglicht es Ihnen zu steuern, ob ein solches übergeordnetes Segment von der Reportausgabe ausgeschlossen wird.
Die Einstellung von MULTIPATH wirkt sich auch auf die Verarbeitung von Auswahltests auf unabhängigen Pfaden aus. Stellt man MULTIPATH auf:
Die MULTIPATH-Einstellungen gelten für alle Datenquellentypen und in allen Reportumgebungen (TABLE, TABLEF, MATCH, GRAPH und Anfragen mit mehreren Anzeigebefehlen). MULTIPATH funktioniert auch mit alternativen Ansichten, indizierten Ansichten, Filtern, DBA und verbundenen Strukturen.
Verwenden Sie, um MULTIPATH in der Befehlsebene oder in einer gespeicherten Prozedur einzustellen
SET MULTIPATH = {SIMPLE|COMPOUND}
Verwenden Sie, um MULTIPATH in einer Reportanfrage einzustellen
ON TABLE SET MULTIPATH {SIMPLE|COMPOUND}
Hierbei gilt:
Hinweis: Ein eindeutiges Segment wird als Teil des übergeordneten Segments angesehen und bewirkt daher keine unabhängige Pfadverarbeitung.
Die (FOC144)-Warnmeldung wird erzeugt, wenn eine Anfrage Daten in einem Mehrpfadreport filtert:
(FOC144) WARNING. TESTING IN INDEPENDENT SETS OF DATA
Zugehörige Informationen finden Sie unter Kombinationen aus MULTIPATH und SET ALL und Regeln, um zu bestimmen, ob ein Segment benötigt wird.
Die Anzahl der Segmentinstanzen (Zeilen) ist nicht begrenzt. Es kann jedoch keine einzelne Segmentinstanz mehr als 4K aktive Felder haben (verwiesene Felder oder Felder, die benötigt werden, um verwiesene Felder abzurufen). Falls diese Grenze überschritten wird, wird die Einstellung SIMPLE implementiert und es wird eine Meldung zurückgegeben.
Dieses Beispiel verwendet die folgenden Segmente aus der Datenquelle EMPLOYEE:
Die darauf folgende Anfrage ruft Daten von beiden Pfaden mit MULTIPATH = SIMPLE ab und zeigt diese an, falls eines der Kriterien erfüllt wurde:
SET ALL = OFF SET MULTIPATH = SIMPLE TABLE FILE EMPLOYEE PRINT GROSS DATE_ATTEND COURSE_NAME BY LAST_NAME BY FIRST_NAME WHERE PAY_DATE EQ 820730 WHERE COURSE_CODE EQ '103' END
Die folgende Warnmeldung wird ausgegeben:
(FOC144) WARNING. TESTING IN INDEPENDENT SETS OF DATA
Obwohl manche Angestellten keinen Kurs belegt haben, sind sie in der Reportausgabe enthalten, da für sie Instanzen auf einem der beiden Pfade vorhanden sind.
Die Ausgabe ist:
Wenn Sie die gleiche Anfrage mit MULTIPATH = COMPOUND ausführen, werden die Angestellten ohne Instanzen für COURSE_NAME in der Reportausgabe weggelassen, und die Warnmeldung wird nicht ausgegeben.
Die Ausgabe ist:
LAST_NAME FIRST_NAME GROSS DATE_ATTEND COURSE_NAME --------- ---------- ----- ----------- ----------- JONES DIANE $1,540.00 82/05/26 BASIC REPORT PREP FOR PROG SMITH MARY $1,100.00 81/11/16 BASIC REPORT PREP FOR PROG
Der Parameter ALL beeinflusst die Verarbeitung unabhängiger Pfade. Die folgende Tabelle verwendet Beispiele aus der Datenquelle EMPLOYEE, um die Interaktion von ALL und MULTIPATH zu beschreiben.
Anfrage |
MULTIPATH=SIMPLE |
MULTIPATH=COMPOUND |
---|---|---|
SET ALL = OFF PRINT EMP_ID PAY_DATE DATE_ATTEND |
Zeigt Angestellte an, für die entweder SALINFO- oder ATTNDSEG-Daten vorliegen. |
Zeigt Angestellte an, für die sowohl SALINFO- als auch ATTNDSEG-Daten vorliegen. |
SET ALL = ON PRINT EMP_ID PAY_DATE DATE_ATTEND |
Zeigt Angestellte an, für die SALINFO-Daten oder ATTNDSEG-Daten oder keine untergeordneten Daten vorliegen. |
Dasselbe wie SIMPLE. |
SET ALL = OFF PRINT EMP_ID PAY_DATE DATE_ATTEND WHERE PAY_DATE EQ 980115 |
Zeigt Angestellte an, für die entweder SALINFO-Daten für 980115 oder ATTNDSEG-Daten vorliegen. Erzeugt eine Meldung (FOC144). |
Zeigt Angestellte an, für die sowohl SALINFO-Daten für 980115 als auch ATTNDSEG-Daten vorliegen. |
SET ALL = ON PRINT EMP_ID PAY_DATE DATE_ATTEND WHERE PAY_DATE EQ 980115 |
Zeigt Angestellte an, für die entweder SALINFO-Daten für 980115 oder ATTNDSEG-Daten vorliegen. Erzeugt eine Meldung (FOC144). |
Zeigt Angestellte an, für die SALINFO-Daten für 980115 vorliegen. Alle DATE_ATTEND-Daten werden ebenfalls angezeigt. |
SET ALL = OFF PRINT ALL.EMP_ID DATE_ATTEND WHERE PAY_DATE EQ 980115 |
Zeigt Angestellte an, für die entweder SALINFO-Daten für 980115 oder ATTNDSEG-Daten vorliegen. Erzeugt eine Meldung (FOC144). |
Zeigt Angestellte an, für die SALINFO-Daten für 980115 vorliegen. Alle DATE_ATTEND-Daten werden ebenfalls angezeigt. |
SET ALL = ON or OFF
PRINT EMP_ID PAY_DATE DATE_ATTEND
WHERE PAY_DATE EQ 980115 AND COURSE_CODE EQ '103' |
Zeigt Angestellte an, für die entweder SALINFO-Daten für 980115 oder COURSE 103-Daten vorliegen. Hinweis: SIMPLE behandelt AND in der WHERE-Klausel wie OR. Erzeugt eine Meldung (FOC144). |
Zeigt Angestellte an, für die sowohl SALINFO-Daten für 980115 als auch COURSE 103-Daten vorliegen. |
Hinweis: SET ALL = PASS wird mit MULTIPATH = COMPOUND nicht unterstützt.
Zugehörige Informationen über den ALL-Parameter finden Sie unter Datensätze mit fehlenden Feldwerten verarbeiten.
Die Segmentregel wird auf eine Ebene nach der anderen angewendet und zwar absteigend in der Datenquellen-/Ansichts-Hierarchie. Das heißt, dass die Existenz eines übergeordneten Segments von der Existenz des untergeordneten Segments abhängt, und dass ein untergeordnetes Segment von der Existenz eines ihm untergeordneten Segments abhängt usw. für die gesamte Datenquellenstruktur.
Die folgenden Regeln werden verwendet, um zu bestimmen, ob ein Segment erforderlich oder optional ist:
Bei SET ALL = PASS ist ein Segment mit WHERE- oder IF-Kriterien optional.
Hinweis: ALL = PASS wird nicht für alle Datenadapter unterstützt und verhält sich ggf., falls es unterstützt wird, ein wenig anders. Genaue Informationen finden Sie in der Dokumentation des Datenadapters.
Zugehörige Informationen über den Parameter ALL finden Sie unter Datensätze mit fehlenden Feldwerten verarbeiten und im Handbuch Daten mit der WebFOCUS-Sprache beschreiben .
WebFOCUS |