Объедините три таблицы с помощью JOIN

Я столкнулся с проблемой, когда у меня есть три таблицы:
Первая таблица содержит такие данные, как:

A B C D  
1 2 3 4  
1 2 3 5  

Вторая таблица содержит такие данные:

D E  
4 x  
6 y

Третья таблица содержит такие данные, как:

E F  
x result1
y result2

Мне нужен запрос, который отображает все значения из первой таблицы (очевидно, левое внешнее соединение) и, если доступно, комбинацию второй и третьей таблицы.

Результат будет примерно таким:

A B C D E F  
1 2 3 4 x result 1  
1 2 3 5

Однако я не могу найти решение по этому поводу.

Я уже пробовал два раза присоединиться слева (приводит к ошибке, поскольку это не разрешено в opensql) и внутреннее присоединение ко второй и третьей таблице и пытается присоединиться к первой таблице справа (также не разрешено в opensql).

Как мне реализовать желаемую таблицу результатов?


person C. Henke    schedule 09.08.2018    source источник
comment
Вы можете разместить свой код?   -  person Nelson Miranda    schedule 09.08.2018


Ответы (1)


SELECT *
  FROM first
  LEFT OUTER JOIN second
    ON second~d = first~d
  LEFT OUTER JOIN third
    ON third~e = second~e
  INTO TABLE @DATA(lt_result).

Конечно, вы можете делать несколько LEFT OUTER JOIN в OpenSQL.

Второе соединение также может быть INNER JOIN, в зависимости от того, что именно вы хотите.

Проверено на SAP NetWeaver 7.52 на SAP HANA 2.0.

person Florian    schedule 09.08.2018
comment
На самом деле это не работает. Это приведет к ошибке. - person C. Henke; 10.08.2018
comment
Как уже было сказано, я успешно выполнил это в системе ABAP. Это также не первый раз, когда я пишу такие мульти-объединения в OpenSQL. Какую версию NetWeaver вы используете? - person Florian; 10.08.2018
comment
Я использую 7.31. Я уже нашел обходной путь. В любом случае спасибо - person C. Henke; 10.08.2018