Ansicht
Dokumentation

ABENJOINS_ABEXA - JOINS ABEXA

ABENJOINS_ABEXA - JOINS ABEXA

Addresses (Business Address Services)   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

SELECT, innere, äußere und Cross Joins

Das Beispiel demonstriert innere und äußere Joins sowie Cross Joins in der SELECT-Anweisung.

Quelltext

Ausführen

Beschreibung

Innere und äußere Joins zwischen zwei Tabellen DEMO_JOIN1 und DEMO_JOIN2, bei denen die letzte Spalte von DEMO_JOIN1 mit der ersten Spalte von DEMO_JOIN2 in den Join-Bedingungen gleichgesetzt wird.

  • Die beiden inneren Joins zwischen den Tabellen ergeben unabhängig von der Anordnung auf linker und rechter Seite die gleiche Ergebnismenge. Es gibt drei Zeilenkombinationen, für welche die Join-Bedingung erfüllt ist.
  • Die Ergebnismengen der beiden linken äußeren Joins hängen von der Anordnung der Tabellen auf linke und rechte Seite ab. Neben den drei Zeilen, die bereits der innere Join ergibt, wird für die jeweils überzählige Zeile der linken Seite eine leere Zeile (eigentlich Null-Werte) auf der rechten Seite erzeugt. Dass die leere Zeile im letzten Ergebnis links angezeigt ist, liegt am Aufbau der internen Tabelle in der INTO-Klausel, in welche die Spalten von DEMO_JOIN1 immer links und von DEMO_JOIN2 immer rechts eingelesen werden. Bei Verwendung der Angabe * in der SELECT-Liste und ohne CORRESPONDING FIELDS in der INTO-Klausel wäre das Ergebnis anders angeordnet.
  • Die Ergebnismengen der beiden rechten äußeren Joins entsprechen genau den Ergebnismengen der beiden vorhergehenden linken äußeren Joins mit Angabe der DDIC-Datenbanktabellen in umgekehrter Reihenfolge.
  • Die Ergebnismengen der beiden Cross Joins ohne WHERE-Bedingung sind gleich zu den Ergebnismengen entsprechender innerer und äußerer Joins, deren ON-Bedingung immer wahr ist. Es spielt keine Rolle, auf welcher Seite die Datenquellen beim Cross Join angegeben sind. Die Anzahl der Zeilen ergibt sich aus 4 x 3 = 12.
  • Die Ergebnismenge des Cross Joins mit WHERE-Bedingung ist gleich zur Ergebnismenge eines inneren Joins mit entsprechender ON-Bedingung. Dabei ist aber zu beachten, dass beim Cross Join erst alle Zeile gelesen und dann selektiert werden, während der innere Join nur die Zeilen liest, die den Bedingungen entsprechen.

Siehe auch das ausführbare Beispiel SQL-Ausdrücke, Coalesce-Funktion, in dem die standardmäßigen Initialwerte, die für die Null-Werte beim äußeren Join gesetzt werden, durch einen anderen Wert ersetzt werden.






Addresses (Business Address Services)   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 3173 Date: 20240523 Time: 165804     sap01-206 ( 77 ms )