Join über mehrere Tabellen

Getting started ... Alles für einen gelungenen Start.
3 Beiträge • Seite 1 von 1
3 Beiträge Seite 1 von 1

Join über mehrere Tabellen

Beitrag von Bright4.5 (Specialist / 301 / 21 / 1 ) »
Hallo zusammen,

ich hätte mal eine ganz kurze Frage, wie man das folgende Problem elegant lösen könnte:

Ich brauch die folgenden Daten aus der DB-Tabelle AUSP:

ATINN, KLART, ATWRT, ATFLV

so nun bräuchte ich aber auch noch die daten aus dem Feld Class welche aus der DB-Tabelle KLAH kommen.

So nun haben AUSP und KLAH keine direkten Verbindungsfelder, somit müsste ich zuerst über die DB-Tabelle KSSK welche das Feld CLINT hat, mit welcher ich den richtigen Datensatz auch in der KLAH identifizieren könnte. Somit müsste ich von der AUSP mit dem Feld OBJEK zuerst das Feld CLINT in der KSSK selektieren und dann damit in der KLAH das Feld Class selektieren.

Soweit so gut. Ich habe mir hierzu jetzt 2 Selects aufgebaut und zwar so :

Code: Alles auswählen.

SELECT au~objek, au~atinn, au~klart, au~atwrt, au~atflv,
       cb~atbez, ks~clint
  FROM ( ausp AS au INNER JOIN cabnt AS cb ON au~atinn = cb~atinn
                    INNER JOIN kssk AS ks ON au~objek = ks~objek )
  INTO CORRESPONDING FIELDS OF TABLE @gt_collect
  WHERE au~objek IN @so_obj
  AND   au~klart IN @so_klart.

SELECT class
  FROM klah
  INTO gv_class
  FOR ALL ENTRIES IN gt_collect
  WHERE clint = gt_collect-clint.
endselect.
Ich finde die Lösung recht unschön und wollte fragen, ob es möglich wäre so ein Problem mit einem Select über joins zu regeln?

Vielen Dank im Voraus.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Join über mehrere Tabellen

Beitrag von jocoder (Specialist / 345 / 3 / 103 ) »
Die Tabelle KLAH kann in den Join mit eingebunden werden:

Code: Alles auswählen.

SELECT au~objek, au~atinn, au~klart, au~atwrt, au~atflv,
       cb~atbez, ks~clint, ka~clint
  FROM ( ausp AS au INNER JOIN cabnt AS cb ON au~atinn = cb~atinn
                    INNER JOIN kssk AS ks ON au~objek = ks~objek
                    INNER JOIN klah AS ka ON ka~clint = ks~clint )
  INTO CORRESPONDING FIELDS OF TABLE @gt_collect
  WHERE au~objek IN @so_obj
  AND   au~klart IN @so_klart.

Re: Join über mehrere Tabellen

Beitrag von DeathAndPain (Top Expert / 1972 / 264 / 418 ) »
Ein paar Anmerkungen:
  • Die Klammer ist überflüssig.
  • Ich verstehe nicht, weshalb die Leute bei JOINs alle so geil darauf sind, Aliasnamen zu definieren. In meinen Augen macht das den JOIN deutlich schlechter lesbar. Die paar Tastenanschläge mehr für das Ausschreiben der Tabellennamen sollte es einem wert sein, erst recht bei den kurzen Tabellennamen der SAP. Ich verwende Aliasnamen nur dann, wenn dieselbe Tabelle mehrfach gejoint werden soll.
  • Es macht auch keinen Sinn, clint mitzuselektieren, wenn das nur das Bindeglied ist und gar nicht als Ergebnis gebraucht wird. Schon gar nicht zweimal. Dafür hast Du das eigentlich vom Threadersteller benötigte Feld klah~class nicht mitgelesen.
Hier würde ich also schreiben:

Code: Alles auswählen.

SELECT ausp~objek ausp~atinn ausp~klart ausp~atwrt ausp~atflv cabnt~atbez klah~class
  FROM ausp INNER JOIN cabnt ON ausp~atinn = cabnt~atinn
                    INNER JOIN kssk ON kssk~objek = ausp~objek
                    INNER JOIN klah ON klah~clint = kssk~clint
  INTO CORRESPONDING FIELDS OF TABLE gt_collect
  WHERE ausp~objek IN so_obj
  AND   ausp~klart IN so_klart.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
autohandel7


Seite 1 von 1

Vergleichbare Themen

4
Antw.
3320
Views
Tabellen Join
von commolus » 08.06.2012 10:54 • Verfasst in ABAP Objects®
12
Antw.
7417
Views
3 Tabellen-Join
von kaufikauf » 12.08.2014 08:00 • Verfasst in ABAP® für Anfänger
12
Antw.
6641
Views
Inner Join über 4 Tabellen
von falk » 02.03.2006 11:26 • Verfasst in ABAP® Core
4
Antw.
22824
Views
Join über 2 Tabellen
von Patrick Emse » 25.01.2006 10:19 • Verfasst in ABAP® Core
4
Antw.
3608
Views
Join über Cluster Tabellen
von m.schwertle » 24.01.2008 10:48 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

IF mit AND und OR
vor einer Woche von GastX 6 / 9044
Meine Inbox
vor einer Woche von Rabea1103 1 / 6794
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 7939
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 13437

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

IF mit AND und OR
vor einer Woche von GastX 6 / 9044
Meine Inbox
vor einer Woche von Rabea1103 1 / 6794
PCL2 Cluster auslesen
vor einer Woche von DeathAndPain 2 / 7939
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von Bright4.5 3 / 13437