Show TOC

Beispiele für die Umsetzung von BedingungenLocate this document in the navigation structure

Verwendung

Die folgenden Beispiele zeigen, welche Auswirkungen das Kennzeichen left outer: Filterwert in on-Bedingung aufnehmen auf die Queryergebnisse hat.

Ein stammdatentragendes Merkmal ZPRODUCT (T00001) enthält zwei Datensätze.

#Feld ( ZPRODUCT )

A

B

Ein DataStore-Objekt ZSD_01 (T00002) enthält drei Datensätze:

#Feld (ZPRODUCT)

#Datum (0DATE)

ABC-Kennzeichen (ABCKEY)

A

27.09.2003

X

A

01.04.2003

X

C

17.05.2003

X

Im InfoSet werden beide InfoProvider verknüpft über: ZPRODUCT- ZPRODUCT mit ZSD_01- ZPRODUCT

Es sollten nun folgende Fälle betrachtet werden:

Fall 1

Die Objekte werden über einen Inner Join verknüpft, alle Felder werden in der Query ausgegeben und es wird eine Einschränkung auf das Datum vorgenommen - nämlich auf den 01.04.2003. Wenn alle Objekte des InfoSets über einen Inner Join verknüpft sind, hat das Kennzeichen keinen Einfluss auf das erzeugte SQL-Statement bzw. auf das Endergebnis. Die Reihenfolge, ob die Bedingung vor Auswertung des Joins oder nach Ausführung des Joins ausgeführt wird, ist nicht relevant. Das Ergebnis ist identisch - unabhängig davon, ob die Einschränkungen in der on- oder in der where-Bedingung stehen.

In beiden Fällen erhält man als Ergebnis:

#Feld (ZPRODUCT)

#Feld (ZPRODUCT)

#Datum (0DATE)

ABC-Kennzeichen (ABCKEY)

A

A

01.04.2003

X

Fall 2

Die Objekte werden über einen Left Outer Join (die outer-Bedingung wird an dem DataStore-Objekt gesetzt) verknüpft, alle Felder werden in der Query ausgegeben und es wird eine Einschränkung auf das Datum vorgenommen - nämlich auf den 01.04.2003.

In diesem Fall wird angenommen, dass das Kennzeichen initial ist. Somit wird die Einschränkung in die where-Bedingung aufgenommen und sie wird nach dem Join ausgewertet.

Für obiges Beispiel bedeutet dies folgendes:

Zunächst wird der Join gebildet. Daraus ergibt sich:

#Feld (ZPRODUCT)

#Feld (ZPRODUCT)

#Datum (0DATE)

ABC-Kennzeichen (ABCKEY)

A

A

27.09.2003

X

A

A

01.04.2003

X

B

Nun wird auf diesem Ergebnis die Einschränkung angewendet (Datum = 01.04.2003).

Somit sieht das Ergebnis aus wie folgt:

#Feld (ZPRODUCT)

#Feld (ZPRODUCT)

#Datum (0DATE)

ABC-Kennzeichen (ABCKEY)

A

A

01.04.2003

X

Fall 3

Die Objekte werden über einen Left Outer Join (die outer-Bedingung wird an dem DataStore-Objekt gesetzt) verknüpft, alle Felder werden in der Query ausgegeben und es wird eine Einschränkung auf das Datum vorgenommen - nämlich auf den 01.04.2003.

In diesem Fall wird angenommen, dass das Kennzeichen nicht initial ist. Somit wird die Einschränkung in die on-Bedingung aufgenommen und sie wird vor dem Join ausgewertet.

Für obiges Beispiel bedeutet dies folgendes:

Zunächst wird die Einschränkung ausgewertet. Für das DataStore-Objekt existiert dann folgender Satz:

#Feld (ZPRODUCT)

#Datum (0DATE)

ABC-Kennzeichen (ABCKEY)

A

01.04.2003

X

Im zweiten Schritt erfolgt der Join. Somit sieht das Ergebnis aus wie folgt:

#Feld (ZPRODUCT)

#Feld (ZPRODUCT)

#Datum (0DATE)

ABC-Kennzeichen (ABCKEY)

A

A

01.04.2003

X

B

Dadurch, dass die Einschränkung auf den 01.04.2003 in die on-Bedingung kommt, erhält man nun als Ergebnis:

#Feld (ZPRODUCT)

#Feld (ZPRODUCT)

#Datum (0DATE)

ABC-Kennzeichen (ABCKEY)

A

A

01.04.2003

X

B