hi!
Du musst nicht BEIDE separat joinen
Code: Alles auswählen.
SELECT b~mandt b~carrid b~connid b~fldate b~bookid b~customid f~planetype c~carrname d~scustom
FROM sbook AS b
INNER JOIN sflight AS f
ON b~carrid = f~carrid
AND b~connid = f~connid
AND b~fldate = f~fldate
INNER JOIN scarr AS c
ON f~carrid = c~carrid
INNER JOIN scustom AS d
ON d~id = b~customid
INTO CORRESPONDING FIELDS OF TABLE tb_eigen
WHERE b~carrid IN carr.
Ich hab mir erlaubt die Ausrichtung anzupassen, damit man besser erkennt wie das mit dem Join funktioniert. Nach jedem JOIN-Befehl wird defniniert welche Felder der gejointen Tabelle mit ALLEN bisherigen verunden werden sollen. Das heißt du hängst immer wieder weitere Tabellen an das Ergebnis an. (Bis du irgendwann den Datenbankpuffer sprengst
)
Aber Achtung bei INNER JOIN müssen in allen Tabellen Einträge vorhanden sein. Wenn zum Beispiel in SCUSTOM nichts zum Eintrag in der SBOOK vorhanden ist, wird auch nichts ausgegeben. In dem Fall wird ein LEFT (OUTER) JOIN benötigt. Mehr Infos gibts in der Hilfe und im Web zum Thema "SQL und Joins" (Ist jetzt nichts SAP-spezifisches)
Kleiner Hinweis noch zum Thema Performance:
Ein JOIN ist kein Allheilmittel, da die Belastung auf die DB geht die in SAP der Flaschenhals des Systems ist. Es muss wirklich von Fall zu Fall überlegt werden ob man nicht lieber ein paar MB mehr überträgt anstatt die DB umständlich die Daten aussieben zu lassen.
In deinem Fall würde ich nach dem SELECT die IDs mit LOOP AT und APPEND in einer eigenen internen Tabelle sammeln. Danach einmal SORT und DELETE ADJACENT DUPLICATES. Und schließlich mit der Gesamtmenge der IDs ein SELECT FOR ALL ENTRIES.
Ich würde dir sonst noch raten die SAP Schulung BC490 zu besuchen (oder die Unterlagen irgendwo zu besorgen) da erfährt man was man in SAP alles machen kann um Programme zu beschleunigen.
lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
ECC: 6.18
Basis: 7.50